Mengalih keluar Nilai Duplikat daripada Tatasusunan dalam JavaScript
Adakah anda berurusan dengan tatasusunan yang mungkin mengandungi pendua dan perlu mencipta tatasusunan baharu dengan hanya nilai yang unik? Berikut ialah panduan komprehensif dengan pelbagai pendekatan untuk menyelesaikan isu biasa ini.
TL;DR: Menggunakan Set ES6 dan Sintaks Spread
const uniq = [...new Set(array)];
"Pintar" tetapi Pendekatan Naif (Kuadratik Masa)
const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
Hashtables to the Rescue (Masa Linear)
const uniq = (a) => { const seen = {}; return a.filter((item) => { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); };
The Best of Two Worlds (Linear Time)
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); } }); };
Isih dan Penapis (Linear Masa)
const uniq = (a) => { return a.sort().filter((item, pos, ary) => !pos || item !== ary[pos - 1]); };
Unik dengan Kunci (Menapis Berdasarkan Panggilan Balik)
const uniqBy = (a, key) => { const seen = {}; return a.filter((item) => { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) };
Memelihara Kejadian Pertama atau Terakhir (Menggunakan Tetapkan atau Peta)
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(); };
Pilih pendekatan yang menjajarkan dengan jenis tatasusunan dan keperluan prestasi anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Pendua dengan Cekap daripada Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!