Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengeluarkan Nilai Duplikat daripada Tatasusunan JavaScript?
Apabila bekerja dengan tatasusunan JavaScript, selalunya perlu mengalih keluar nilai pendua. Beberapa pendekatan boleh digunakan untuk mencapai ini tanpa mengubah tatasusunan asal.
Kaedah yang paling mudah ialah menggunakan Set pembina dan sintaks penyebaran:
const uniq = [...new Set(array)];
Ini mencipta Set baharu daripada tatasusunan, yang mengalih keluar pendua secara automatik. Sintaks hamparan kemudian menukar Set kembali kepada tatasusunan.
Pilihan lain ialah menapis tatasusunan berdasarkan kaedah indexOf:
const uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Kaedah ini berulang melalui tatasusunan dan menyemak sama ada kejadian pertama setiap elemen sepadan dengan kedudukannya. Hanya elemen unik yang akan memenuhi syarat ini.
Untuk kecekapan, pencincangan dengan objek boleh digunakan:
function uniq(a) { const seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Pendekatan ini mengekalkan jadual cincang untuk menyemak nilai pendua dengan cepat, memastikan masa linear kerumitan.
Jika tatasusunan input diisih, anda boleh mengalih keluar pendua dengan mengisihnya dan kemudian menapis unsur-unsur yang sama berturut-turut:
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Untuk menapis pendua berdasarkan kriteria tertentu, fungsi panggil balik boleh digunakan:
function uniqBy(a, key) { const seen = {}; return a.filter(function(item) { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); }
Panggil balik kunci membolehkan perbandingan tersuai dan membolehkan mengalih keluar pendua berdasarkan lebih kompleks logik.
Dalam senario tertentu, adalah wajar untuk mengekalkan sama ada kejadian pertama atau terakhir unsur pendua:
function uniqByKeepFirst(a, key) { const seen = new Set(); return a.filter(item => { const k = key(item); return seen.has(k) ? false : seen.add(k); }); } function uniqByKeepLast(a, key) { return [ ...new Map( a.map(x => [key(x), x]) ).values() ] }
Fungsi uniqByKeepFirst menggunakan Set untuk mengekalkan kunci unik , manakala uniqByKeepLast menggunakan Peta untuk mengekalkan nilai ditemui terakhir yang dikaitkan dengan setiap kunci.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Nilai Duplikat daripada Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!