Rumah >hujung hadapan web >tutorial js >Bagaimana Mencari dan Mengembalikan Nilai Unik dengan Cekap dalam Tatasusunan JavaScript?
Mencari Nilai Unik dalam Tatasusunan JavaScript
Apabila berurusan dengan tatasusunan dalam JavaScript, selalunya wajar untuk mengalih keluar nilai pendua untuk memastikan keunikan. Berikut ialah masalah biasa yang dihadapi dengan tatasusunan JavaScript:
var numbers = [1, 2, 3, 4, 5, 1, 2]; numbers.getUnique(); // [1, 2, 3, 4, 5] (incorrectly includes 1 and 2)
Kaedah prototaip yang disediakan, Array.prototype.getUnique, cuba menapis pendua tetapi gagal apabila ia menemui nilai sifar.
Kepada faham isu itu, mari kita periksa kod:
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; };
Masalahnya terletak pada objek yang digunakan untuk mengesan nilai unik. Apabila nombor dimasukkan ke dalam o, ia ditukar kepada rentetan. Walau bagaimanapun, untuk sifar, penukaran ini menghasilkan rentetan kosong ''.
Oleh itu, apabila gelung kedua berulang ke atas o, ia menemui rentetan kosong sebagai kunci dan menambahkannya pada tatasusunan. Ini mengakibatkan kemasukan nilai pendua yang salah.
Penyelesaian yang Betul untuk Nilai Unik
Untuk mendapatkan nilai unik daripada tatasusunan dengan tepat, pertimbangkan penyelesaian ES6 berikut menggunakan kaedah penapis:
function onlyUnique(value, index, array) { return array.indexOf(value) === index; } // usage example: var numbers = [1, 2, 3, 4, 5, 1, 2]; var unique = numbers.filter(onlyUnique); console.log(unique); // [1, 2, 3, 4, 5]
Fungsi ini membandingkan indeks setiap nilai dalam tatasusunan dengan indeks semasa. Jika indeks sepadan, ini bermakna nilai itu unik dan disertakan dalam tatasusunan yang ditapis. Dengan pendekatan ini, semua nilai pendua dialih keluar dengan berkesan.
Atas ialah kandungan terperinci Bagaimana Mencari dan Mengembalikan Nilai Unik dengan Cekap dalam Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!