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

JavaScript:ある配列の複数の値が別の配列に含まれているかチェックする方法

JavaScriptでは、2つの数値配列を受け取り、1つ目の配列のすべての要素が2つ目の配列に存在するかどうかを判定する関数が必要になることがあります。本記事では、そのような一括チェックを行う実装方法をわかりやすく解説します。

実装例

以下のコードは、map()とindexOf()を組み合わせて、1つ目の配列の各要素が2つ目の配列に含まれているかを確認する例です。

const arr1 = [34, 78, 89];
const arr2 = [78, 67, 34, 99, 56, 89];

const multipleIncludes = (first, second) => {
    const indexArray = first.map(el => {
        return second.indexOf(el);
    });
    return indexArray.indexOf(-1) === -1;
}

console.log(multipleIncludes(arr1, arr2));

コードの仕組み

この関数は次の手順で動作します。

  • map()を使い、1つ目の配列の各要素に対してsecond.indexOf(el)を実行し、2つ目の配列内での位置(インデックス)を取得します。
  • 要素が見つからなかった場合、indexOf()は -1 を返します。
  • 最後に indexArray.indexOf(-1) === -1 で判定し、結果の中に -1 が1件もなければ「すべての要素が存在する」とみなして true を返します。

出力結果

コンソールには次のように表示されます。

true

より簡潔な書き方:every() と includes()

モダンなJavaScriptでは、every()とincludes()を組み合わせることで、同じ処理をより短く・読みやすく記述できます。

const multipleIncludes = (first, second) =>
    first.every(el => second.includes(el));

console.log(multipleIncludes(arr1, arr2)); // true

includes()はES2015(ES6)で導入されたメソッドで、真偽値を直接返すためindexOf()よりも意図が明確です。可読性の観点から、特別な理由がない限りこちらの書き方が推奨されます。

  1. JavaScriptのArray.values()メソッドとは?使い方とサンプルコードを徹底解説

    JavaScriptのArray.values()メソッドとは? JavaScriptのArray.values()メソッドは、対象の配列に含まれるすべての値を格納したイテレーターオブジェクトを返します。ES2015(ES6)以降で利用可能なこのメソッドは、for...ofループやスプレッド構文([...arr])と組み合わせることで、配列の各要素を効率的に取り出せます。 なお、keys()やentries()がインデックス情報も一緒に返すのに対し、values()は純粋に「値」だけを順番に提供する点が大きな特徴です。 基本構文 arr.values() 引数は不要で、戻り値として新しいArr

  2. 複数の値でJavaScript配列の要素を検索する方法

    JavaScriptである配列(arr)が、別の配列(arr1)の複数の値・すべての要素を含んでいるかどうかを確認したい場面はよくあります。そんなときは、every()メソッドとincludes()メソッドを組み合わせることで、シンプルに判定できます。以下はそのサンプルコードです。 コード例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content=