Heim >Web-Frontend >js-Tutorial >Wie kann ich doppelte Werte effizient aus JavaScript-Arrays entfernen?
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!