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
Freigeben: 2025-01-03 12:13:41
Original
673 Leute haben es durchsucht

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)];
Nach dem Login kopieren

„Smart“ aber naiver Ansatz (Quadratische Zeit)

const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
Nach dem Login kopieren

Hashtables to the Rescue (Lineare Zeit)

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

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);
    }
  });
};
Nach dem Login kopieren

Sortieren und Filtern (Lineare Zeit)

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

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);
  })
};
Nach dem Login kopieren

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();
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage