ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript 配列から重複値を効率的に削除するにはどうすればよいですか?

JavaScript 配列から重複値を効率的に削除するにはどうすればよいですか?

DDD
リリース: 2025-01-03 12:13:41
オリジナル
639 人が閲覧しました

How Can I Efficiently Remove Duplicate Values from JavaScript Arrays?

JavaScript で配列から重複する値を削除する

重複を含む可能性のある配列を扱っており、次の値のみを含む新しい配列を作成する必要がありますか?独特の価値観?この一般的な問題を解決するための複数のアプローチを含む包括的なガイドを次に示します。

TL;DR: ES6 セットおよびスプレッド構文の使用

const uniq = [...new Set(array)];
ログイン後にコピー

「スマート」しかし素朴なアプローチ (二次方程式)時間)

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
ログイン後にコピー

救済のためのハッシュテーブル (線形時間)

const uniq = (a) => {
  const seen = {};
  return a.filter((item) => {
    return seen.hasOwnProperty(item) ? false : (seen[item] = true);
  });
};
ログイン後にコピー

両方の長所 (線形)時間)

const 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);
    }
  });
};
ログイン後にコピー

並べ替えとフィルター (線形時間)

const uniq = (a) => {
  return a.sort().filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
};
ログイン後にコピー

キーごとに一意 (コールバックに基づくフィルター)

const uniqBy = (a, key) => {
  const seen = {};
  return a.filter((item) => {
    const k = key(item);
    return seen.hasOwnProperty(k) ? false : (seen[k] = true);
  })
};
ログイン後にコピー

保存中最初または最後の出現 (セットまたはマップを使用)

const uniqByKeepFirst = (a, key) => {
  const seen = new Set();
  return a.filter((item) => {
    const k = key(item);
    return seen.has(k) ? false : seen.add(k);
  });
};

const uniqByKeepLast = (a, key) => {
  return [...new Map(a.map((x) => [key(x), x]))].values();
};
ログイン後にコピー

配列のタイプとパフォーマンス要件に合わせたアプローチを選択してください。

以上がJavaScript 配列から重複値を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート