【JavaScript】2つのリストから共通する要素を求める

【JavaScript】2つのリストから共通する要素を求める

はじめに

JavaScriptで2つのリスト(配列)から共通する要素を求める方法は複数あります。ここでは、3つの代表的な方法について解説し、実際のコード例を交えて説明します。

例えば、次の2つの配列があるとします。

        let list1 = [1, 2, 3, 4, 5];
        let list2 = [3, 4, 5, 6, 7];
    

この2つのリストから共通の要素を取り出す方法を見ていきましょう。

方法1: forループを使う

最も基本的な方法は、forループを使って1つのリストの各要素を調べ、その要素がもう1つのリストにも存在するかどうかを確認する方法です。

次のコードでは、`list1`の要素を1つずつ調べ、`list2`にもその要素が含まれている場合に共通の要素として取り出しています。

        let list1 = [1, 2, 3, 4, 5];
        let list2 = [3, 4, 5, 6, 7];
        let commonElements = [];

        for (let i = 0; i < list1.length; i++) {
            if (list2.includes(list1[i])) {
                commonElements.push(list1[i]);
            }
        }

        console.log(commonElements); // 出力: [3, 4, 5]
    

この方法では、`includes()`メソッドを使って、`list2`に`list1[i]`が含まれているかをチェックしています。

方法2: filterメソッドを使う

`filter()`メソッドを使って、2つのリストから共通する要素を取り出す方法もあります。`filter()`は、配列の各要素を評価して新しい配列を作成します。

次のコードでは、`list1`の要素を`filter()`メソッドでフィルタリングし、`list2`にその要素が含まれている場合のみ結果として返します。

        let list1 = [1, 2, 3, 4, 5];
        let list2 = [3, 4, 5, 6, 7];

        let commonElements = list1.filter(element => list2.includes(element));

        console.log(commonElements); // 出力: [3, 4, 5]
    

この方法はコードが簡潔で、`filter()`メソッドを活用することで、リストの各要素を簡単に評価できます。

方法3: Setを使う

`Set`オブジェクトを使う方法もあります。`Set`は一意の値を保持するため、重複する要素を自動的に排除します。これを利用することで効率的に共通要素を見つけることができます。

次のコードでは、`Set`を使用して`list1`と`list2`の共通要素を取り出しています。

        let list1 = [1, 2, 3, 4, 5];
        let list2 = [3, 4, 5, 6, 7];

        let set1 = new Set(list1);
        let set2 = new Set(list2);

        let commonElements = [...set1].filter(element => set2.has(element));

        console.log(commonElements); // 出力: [3, 4, 5]
    

この方法では、`Set`に変換した後、`has()`メソッドを使って`set2`に`set1`の要素が含まれているかをチェックしています。

結論

今回紹介した3つの方法は、いずれもJavaScriptで2つのリストから共通する要素を求めるのに有効です。選ぶべき方法は、コードの可読性やパフォーマンスの観点から、状況に応じて変わるでしょう。

  • 簡潔で読みやすいコードが好まれる場合は、`filter()`メソッドを使う方法が良いでしょう。
  • ループによる細かい制御が必要な場合は、`for`ループを使う方法が適しています。
  • パフォーマンスが重要な場合や一意の値が必要な場合は、`Set`を使う方法を検討してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です