Alih keluar Nilai Pendua daripada JS Array
Penduaan elemen dalam tatasusunan JavaScript ialah isu biasa. Untuk menangani perkara ini, pelbagai kaedah boleh digunakan.
Sintaks Tetapkan dan Sebarkan:
Penyelesaian paling ringkas menggunakan pembina Set dan sintaks penyebaran:
uniq = [...new Set(array)];
Naif Pendekatan:
Untuk kesederhanaan, pendekatan mudah melibatkan elemen penapisan berdasarkan indeksnya:
uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
Menggunakan Hashtable:
A kaedah yang lebih cekap memanfaatkan jadual hash, menggunakan sifat objek sebagai kunci:
function uniq(a) { var seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
Menggabungkan Pendekatan:
Untuk mengendalikan pelbagai tatasusunan, penyelesaian hibrid menggabungkan jadual hash untuk primitif dan carian linear untuk objek:
function uniq(a) { var prims = {"boolean":{}, "number":{}, "string":{}}, objs = []; return a.filter(function(item) { var 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 Penapisan:
Isih sebelum penapisan menyediakan pilihan lain, mengalih keluar pendua berdasarkan elemen bersebelahan:
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
Perbandingan Tersuai:
Untuk perbandingan unik, panggilan balik boleh dihantar, dengan "kunci" yang sama ditapis:
function uniqBy(a, key) { var seen = {}; return a.filter(function(item) { var k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengalih Keluar Nilai Pendua daripada Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!