JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列の共通要素(交差)を求める最も簡単な方法|filter()とincludes()の使い方

まず、次のような2つの配列があるとします。

var firstNamesArray=["John","David","Bob","Sam","Carol"];
var secondNamesArray=["Mike","Carol","Adam","David"];

filter() と includes() を組み合わせるのが最もシンプル

配列の交差(両方の配列に存在する共通要素)を求める最も簡単な方法は、filter() メソッドと includes() メソッドを組み合わせて使うことです。filter() で一方の配列を走査し、その各要素がもう一方の配列に含まれているかどうかを includes() で判定します。

コード例

var firstNamesArray=["John","David","Bob","Sam","Carol"];
var secondNamesArray=["Mike","Carol","Adam","David"];
var intersectionOfArray=[];
intersectionOfArray = firstNamesArray.filter(v => secondNamesArray.includes(v));
console.log("2つの配列の共通要素=");
console.log(intersectionOfArray);

上記のプログラムを実行するには、以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名を demo141.js として実行しています。

実行結果

上記のコードを実行すると、次の出力が得られます。

PS C:\Users\Amit\JavaScript-code> node demo141.js
2つの配列の共通要素=
[ 'David', 'Carol' ]

コードの仕組み


filter()firstNamesArray の各要素に対してコールバック関数を実行し、true を返した要素だけで新しい配列を作成します。

includes(v)secondNamesArray 内に値 v が存在すれば true、存在しなければ false を返します。

・この結果、両方の配列に共通して存在する「David」と「Carol」だけが抽出され、intersectionOfArray に格納されます。

補足:大きな配列を扱う場合の注意点

この方法はコードが簡潔で読みやすい反面、計算量は O(n×m) になります。数千件を超えるような大きな配列を扱う場合は、Set を使って片方の配列を事前にセット化しておくと、検索が高速化されパフォーマンスが向上します。小規模なデータであれば、今回のように filter()includes() の組み合わせが最も手軽で分かりやすい選択肢です。

  1. JavaScript配列で要素を検索する方法を徹底解説!find()メソッドの使い方

    JavaScriptで配列の中から特定の要素を検索したい場面は非常に多くあります。本記事では、最もよく使われるfind()メソッドを中心に、実際に動作するサンプルコードとともに分かりやすく解説します。 find()メソッドとは find()メソッドは、配列の各要素に対して指定したテスト関数(コールバック関数)を実行し、条件を満たした最初の要素の値を返します。条件に一致する要素が存在しない場合は undefined を返します。 基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback: 各要素をテストする関数

  2. JavaScriptで配列の最後の要素を取得・表示する方法

    配列の最後の要素を取得して画面に表示するには、pop()メソッドを利用するのが手軽です。以下に、ボタンをクリックすると配列の最後の要素を表示するサンプルコードを示します。 コード例 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> &