ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 配列から重複する値を効率的に削除するにはどうすればよいですか?
JavaScript 配列から重複値を削除することは、特に冗長なエントリを含む可能性のあるデータを扱う場合によく行われるタスクです。これを効果的に実現するには、データの性質とパフォーマンスの考慮事項に応じて、いくつかのアプローチがあります。
この方法では、組み込みの Set コンストラクターとスプレッドを利用します。元の配列の一意の値のみを含む新しい配列を作成する構文:
const uniq = [...new Set(array)];
このアプローチでは、filter() メソッドを使用して配列を反復処理し、最初に出現した各要素が配列内の現在の位置と一致するかどうかを確認します。位置が一致しない要素は重複とみなされます。
const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
ハッシュテーブルは、キーと値のペアを使用して重複要素を検出する効率的な方法を提供します。このアプローチでは、各要素がハッシュテーブルに追加され、要素の存在が即座にチェックされます。
function uniq(a) { const seen = {}; return a.filter((item) => { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
前の 2 つの利点を組み合わせるこのアプローチでは、このソリューションはプリミティブ値のハッシュテーブルとオブジェクトの線形検索を利用します。 uniq
function uniq(a) { const prims = { boolean: {}, number: {}, string: {} }, objs = []; return a.filter((item) => { const type = typeof item; if (type in prims) return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); else return objs.indexOf(item) >= 0 ? false : objs.push(item); }); }重複を削除する前に配列をソートすると、プロセスを簡素化できます。
Unique by...
function uniq(a) { return a.sort().filter((item, pos, ary) => !pos || item != ary[pos - 1]); }特定の基準に基づいて重複を削除する必要がある場合、オブジェクトのプロパティなど、uniqBy() にコールバック関数を提供できます。メソッド:
最初または最後?
function uniqBy(a, key) { const seen = {}; return a.filter((item) => { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); }重複オブジェクトの最初または最後の出現のみを保持したい場合は、Set または Map データ構造を使用できます:
以上がJavaScript 配列から重複する値を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。