1. ホーム
  2. javascript

[解決済み] 配列中の一意でない値(重複している/複数回出現している)をすべて取得する

2022-03-19 22:50:31

質問

JavaScriptの配列に重複する値がないかチェックしたい。これを行うための最も簡単な方法は何ですか?私は重複した値が何であるかを見つける必要があるだけです - 私は実際にそれらのインデックスや重複の回数を必要としません。

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

似たような質問

解決方法は?

配列をソートしてから実行し、次の(または前の)インデックスが現在のインデックスと同じかどうかを確認することができます。ソートアルゴリズムが優れていると仮定すれば、これは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