配列内の一意でない値(重複/複数回出現)をすべて取得する 質問する

配列内の一意でない値(重複/複数回出現)をすべて取得する 質問する

JavaScript 配列をチェックして、重複する値があるかどうかを確認する必要があります。これを行う最も簡単な方法は何ですか? 重複した値が何であるかを見つけるだけで、インデックスや重複回数は実際には必要ありません。

配列をループして他のすべての値が一致するかどうかをチェックできることはわかっていますが、もっと簡単な方法があるはずです。

同様の質問:

ベストアンサー1

配列をソートしてから実行し、次の(または前の)インデックスが現在のインデックスと同じかどうかを確認できます。ソート アルゴリズムが適切であると仮定すると、これは O(n 2 ) 未満になるはずです。

const findDuplicates = (arr) => {
  let sorted_arr = arr.slice().sort(); // You can define the comparing function here. 
  // JS by default uses a crappy string compare.
  // (we use slice to clone the array so the
  // original array won't be modified)
  let results = [];
  for (let i = 0; i < sorted_arr.length - 1; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
      results.push(sorted_arr[i]);
    }
  }
  return results;
}

let duplicatedArray = [9, 9, 111, 2, 3, 4, 4, 5, 7];
console.log(`The duplicates in ${duplicatedArray} are ${findDuplicates(duplicatedArray)}`);

重複に対して関数として返す場合。これは同様のタイプのケース用です。

参照:https://stackoverflow.com/a/57532964/8119511

おすすめ記事