Dapatkan Nilai Unik daripada Tatasusunan JavaScript
Dalam soalan ini, kami berhasrat untuk menghapuskan nilai pendua daripada tatasusunan JavaScript sambil memastikan integriti unsur sifar. Mari kita periksa coretan yang menghadapi isu semasa mengendalikan sifar:
Array.prototype.getUnique = function() { var o = {}, a = [], i, e; for (i = 0; e = this[i]; i++) { o[e] = 1 }; for (e in o) { a.push(e); }; return a; };
Coretan ini memanfaatkan paksaan sedia ada JavaScript, di mana nilai ditukar secara tersirat kepada nilai kebenaran atau palsu. Sifar ialah nilai palsu dalam JavaScript, dan kerana objek dalam JavaScript adalah benar secara lalai, ia akan ditambahkan pada objek semasa gelung awal. Akibatnya, ia kemudiannya ditolak ke dalam tatasusunan yang terhasil semasa gelung berikutnya.
Walau bagaimanapun, dalam JavaScript moden (ES5 dan lebih baru), kami mempunyai akses kepada kaedah yang lebih cekap dan boleh dipercayai untuk mencapai keunikan dalam tatasusunan:
Kaedah Penapis Asli:
Kaedah penapis membolehkan kami mengulangi unsur-unsur tatasusunan dan mengembalikan tatasusunan baharu yang mengandungi hanya elemen yang melepasi fungsi ujian tertentu. Kita boleh mentakrifkan fungsi yang menyemak sama ada elemen adalah unik dalam tatasusunan dengan membandingkan indeksnya dengan kejadian pertama elemen yang sama:
function onlyUnique(value, index, array) { return array.indexOf(value) === index; } // Example usage: const a = ['a', 1, 'a', 2, '1']; const unique = a.filter(onlyUnique); console.log(unique); // Logs: ['a', 1, 2, '1']
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Unik dengan Cekap daripada Tatasusunan JavaScript, Termasuk Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!