ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptで複数の配列にまたがる配列の一致を見つけるにはどうすればよいですか?

JavaScriptで複数の配列にまたがる配列の一致を見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 01:58:29771ブラウズ

How to Find Matches in Arrays Across Multiple Arrays in Javascript?

異なる配列にわたる配列内の一致の検索

文字列値を持つ複数の JavaScript 配列があり、検索とすべての単一の配列で同一の一致のみを抽出します。

次の配列があると想像してください:

var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'];
var arr2 = ['taco', 'fish', 'apple', 'pizza'];
var arr3 = ['banana', 'pizza', 'fish', 'apple'];

目的は、3 つすべてに出現する一致のみを含む配列を取得することです。配列。

['apple', 'fish', 'pizza']

このタスクは、外部ライブラリを使用せずに実行できます。 1 つのアプローチには、filter() メソッドを every() と組み合わせて使用​​することが含まれます。

var result = arrays.shift().filter(function(v) {
    return arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    });
});

このソリューションでは、

  • shift() は、arrays コレクションから最初の配列を削除します。
  • filter() は、指定された条件。
  • every() は、arrays コレクション内のすべての要素が条件に合格するかどうかを確認します。

外側の配列を並べ替えます ( 配列) は長さに基づいてパフォーマンスを最適化できます。

arrays.sort(function(a, b) {
    return a.length - b.length;
});

さらに、配列内に重複が存在する場合は、代わりに reduce() メソッドを使用できます。 filter().

var result = arrays.shift().reduce(function(res, v) {
    if (res.indexOf(v) === -1 && arrays.every(function(a) {
        return a.indexOf(v) !== -1;
    })) res.push(v);
    return res;
}, []);

これらのメソッドを使用すると、未知の長さや重複が含まれている場合でも、複数の配列にわたる配列内の一致を効果的に見つけることができます。

以上がJavaScriptで複数の配列にまたがる配列の一致を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。