Heim >Web-Frontend >js-Tutorial >Wie kann ich doppelte Werte effizient aus JavaScript-Arrays entfernen?

Wie kann ich doppelte Werte effizient aus JavaScript-Arrays entfernen?

DDD
DDDOriginal
2025-01-03 12:13:41654Durchsuche

How Can I Efficiently Remove Duplicate Values from JavaScript Arrays?

Entfernen doppelter Werte aus Arrays in JavaScript

Haben Sie es mit einem Array zu tun, das möglicherweise Duplikate enthält, und müssen nur mit diesem ein neues Array erstellen? die einzigartigen Werte? Hier ist eine umfassende Anleitung mit mehreren Ansätzen zur Lösung dieses häufigen Problems.

TL;DR: Verwenden der ES6-Set-and-Spread-Syntax

const uniq = [...new Set(array)];

„Smart“ aber naiver Ansatz (Quadratische Zeit)

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);

Hashtables to the Rescue (Lineare Zeit)

const uniq = (a) => {
  const seen = {};
  return a.filter((item) => {
    return seen.hasOwnProperty(item) ? false : (seen[item] = true);
  });
};

Das Beste aus beiden Welten (Lineare Zeit)

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);
    }
  });
};

Sortieren und Filtern (Lineare Zeit)

const uniq = (a) => {
  return a.sort().filter((item, pos, ary) => !pos || item !== ary[pos - 1]);
};

Einzigartig nach Schlüssel (Filterung basierend auf a Rückruf)

const uniqBy = (a, key) => {
  const seen = {};
  return a.filter((item) => {
    const k = key(item);
    return seen.hasOwnProperty(k) ? false : (seen[k] = true);
  })
};

Beibehalten des ersten oder letzten Vorkommens (mit Set oder Map)

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();
};

Wählen Sie den Ansatz, der zu Ihrem Array-Typ passt und Leistungsanforderungen.

Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Werte effizient aus JavaScript-Arrays entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn