Rumah > hujung hadapan web > tutorial js > Bagaimanakah Saya Boleh Mengeluarkan Nilai Duplikat dengan Cekap daripada Tatasusunan JavaScript, Termasuk Sifar?

Bagaimanakah Saya Boleh Mengeluarkan Nilai Duplikat dengan Cekap daripada Tatasusunan JavaScript, Termasuk Sifar?

Barbara Streisand
Lepaskan: 2024-12-21 06:31:13
asal
536 orang telah melayarinya

How Can I Efficiently Remove Duplicate Values from a JavaScript Array, Including Zero?

Mengenal pasti Pendua dalam Tatasusunan JavaScript dengan Prototaip

Dalam JavaScript, selalunya perlu mengalih keluar nilai pendua daripada tatasusunan. Satu pendekatan popular melibatkan memanjangkan prototaip Tatasusunan dengan fungsi 'getUnique' tersuai, seperti yang dilihat di bawah:

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;
}
Salin selepas log masuk

Walau bagaimanapun, skrip ini menghadapi masalah apabila tatasusunan mengandungi nilai sifar. Untuk memahami sebabnya, mari kita periksa masalah secara terperinci.

Fungsi 'getUnique' menggunakan objek 'o' sebagai storan sementara untuk nilai. Ini berfungsi dengan baik untuk nilai yang boleh berfungsi sebagai kunci objek, seperti rentetan atau nombor selain daripada sifar. Walau bagaimanapun, JavaScript menganggap nombor sifar ('0') sebagai nilai palsu, yang bermaksud 'o[0]' menilai kepada 'palsu'.

Apabila mengulangi kekunci objek, nilai palsu dilangkau, mengakibatkan peninggalan sifar daripada tatasusunan unik yang terhasil. Tingkah laku ini berbeza daripada operasi yang dimaksudkan, iaitu menganggap sifar sebagai nilai unik yang sah.

Penyelesaian Asli dengan Penapis

Dalam persekitaran JavaScript moden (ES5 dan ke atas) , pendekatan yang lebih ringkas dan cekap tersedia menggunakan kaedah 'penapis':

function onlyUnique(value, index, array) {
  return array.indexOf(value) === index;
}

// usage example:
var a = ['a', 1, 'a', 2, '1'];
var unique = a.filter(onlyUnique);

console.log(unique); // ['a', 1, 2, '1']
Salin selepas log masuk

Kaedah 'penapis' mengambil fungsi panggil balik yang mengembalikan 'benar' untuk setiap elemen unik untuk dimasukkan ke dalam tatasusunan baharu. Dalam kes ini, panggilan balik kami menyemak sama ada indeks elemen semasa dalam tatasusunan sepadan dengan kedudukannya dalam panggilan balik, mengesahkan keunikannya. Pendekatan ini tidak bergantung pada kekunci objek dan mengendalikan nilai sifar dengan betul.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan Nilai Duplikat dengan Cekap daripada Tatasusunan JavaScript, Termasuk Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan