ホームページ > 記事 > ウェブフロントエンド > es6 で 2 つの配列に同じ項目があるかどうかを検出する方法
検出手順: 1. 両方の配列をセット型に変換します (構文 "new Set(arr)"; 2. 2 つのセットの共通部分を取得します (構文 "new Set([...set1].filter ( x=>set2.has(x)))"、交差要素はセット コレクションに含まれて返されます。 3. 交差要素を含むセット コレクションを配列型に変換します。構文は "Array.from( rse)" ;4. 交差配列が空の配列かどうかを判断します。空の配列であれば、同一の項目はありません。そうでない場合は、同一の項目があります。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
2 つの配列に同じ項目があるかどうかを検出することは、2 つの配列が交差するかどうかを検出することになります。
#検出アイデア:
2 つの配列の共通部分を取得します
# #交差点が空かどうかを判断します。空の場合は、同一の項目はありません。空でない場合は、同一の項目があります。
実装手順:
1. 2 つの配列の共通部分を取得します
es6 では、set オブジェクトの has() メソッドを配列の filter() と組み合わせて使用して、2 つの配列の共通部分を見つけることができます。
Set は ES6 によって提供される新しいデータ構造で、配列に似ていますが、重複する値はありません。この機能を使用すると、重複排除のために配列を Set 型に変換し、Array.from メソッドを使用して再度配列に変換できます。
Set has() メソッドは、Set オブジェクトに指定された値が含まれているかどうかを示します。指定された値が存在する場合は true を返し、存在しない場合は false を返します。
注: has() メソッドを使用する場合は、最初に配列をセット コレクション型に変換する必要があります
let a=[1, 2, 3]; let b=[3, 5, 2]; newA = new Set(a); newB = new Set(b); let intersectionSet = new Set([...newA].filter(x => newB.has(x))); console.log(intersectionSet);
ご覧のとおり、このとき、交差要素は集合コレクションに含まれており、戻り値
2.交差要素を含む集合コレクションを配列型に変換します
es6 では、Array.from メソッドを使用して、コレクションを配列型に変換します。
let intersectionSet = Array.from(new Set([...newA].filter(x => newB.has(x)))); console.log(intersectionSet);
if(intersectionSet==[]){ console.log("没有相同项"); }else{ console.log("有相同项"); }
let a=[1, 2, 3];
let b=[3, 5, 2];
console.log(a);
console.log(b);
newA = new Set(a);
newB = new Set(b);
let intersectionSet = Array.from(new Set([...newA].filter(x => newB.has(x))));
console.log("两个数组的交集:");
console.log(intersectionSet);
if(intersectionSet==[]){
console.log("没有相同项");
}else{
console.log("有相同项");
}
[関連する推奨事項:
JavaScript ビデオ チュートリアル以上がes6 で 2 つの配列に同じ項目があるかどうかを検出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。