アレイにJavaScriptで重複が含まれていないかどうかを確認します
この投稿では、JavaScriptでアレイに重複する要素が含まれているかどうかを確認する方法について説明します。
1.ES6セットの使用
The Set
ES6で導入されたオブジェクトは、アレイから重複する値を削除できます。アイデアは、アレイをセットに変換することです。次に、セットのサイズがアレイのサイズよりも小さいことがわかった場合、アレイは一意ではないと結論付けることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function hasDuplicates(arr) { return new Set(arr).size !== arr.length; } var arr = [ 2, 4, 6, 5, 4 ]; if (hasDuplicates(arr)) { console.log("Duplicate elements found."); } else { console.log("No Duplicates found."); } /* 出力: Duplicate elements found. */ |
2.アンダースコア/Lodashライブラリの使用
Setを中間データ構造として使用したくない場合は、次を使用できます uniq() underscore.jsまたはlodash.jsライブラリのメソッド。次のコードは、 _.uniq(array)
メソッドは、重複のないバージョンのアレイを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var _ = require('underscore'); function hasDuplicates(arr) { return _.uniq(arr).length !== arr.length; } var arr = [ 2, 4, 6, 5, 4 ]; if (hasDuplicates(arr)) { console.log("Duplicate elements found."); } else { console.log("No Duplicates found."); } /* 出力: Duplicate elements found. */ |
3.使用する Array.prototype.some()
関数
別の解決策は、各アレイ要素の最初の出現のインデックスと最後の出現のインデックスを見つけることです。アレイ内のいずれかの項目、両方のインデックスが一致しない場合、アレイに重複が含まれていると言えます。
次のコード例は、JavaScriptを使用してこれを実装する方法を示しています some()
メソッド、と一緒に indexOf()
と lastIndexOf()
方法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function hasDuplicates(arr) { return arr.some(x => arr.indexOf(x) !== arr.lastIndexOf(x)); } var arr = [ 2, 4, 6, 5, 4 ]; if (hasDuplicates(arr)) { console.log("Duplicate elements found."); } else { console.log("No Duplicates found."); } /* 出力: Duplicate elements found. */ |
このソリューションは推奨されていないことに注意してください O(N2) 複雑。
これで、JavaScriptでアレイに重複が含まれているかどうかを判断できます。