HANYA KINERJA! kode ini mungkin 10X lebih cepat dari semua kode di sini * berfungsi pada semua browser dan juga memiliki dampak memori terendah .... dan banyak lagi
jika Anda tidak perlu menggunakan kembali larik lama; btw lakukan operasi lain yang diperlukan sebelum mengubahnya menjadi unik di sini mungkin cara tercepat untuk melakukan ini, juga sangat singkat.
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
maka kamu bisa mencoba ini
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 1];
function toUnique(a, b, c) { //array,placeholder,placeholder
b = a.length;
while (c = --b)
while (c--) a[b] !== a[c] || a.splice(c, 1);
return a // not needed ;)
}
console.log(toUnique(array));
//[3, 4, 5, 6, 7, 8, 9, 0, 2, 1]
Saya datang dengan fungsi ini membaca artikel ini ...
http://www.shamasis.net/2009/09/fast-algorithm-to-find-unique-items-in-javascript-array/
Saya tidak suka for loop. ia memiliki banyak parameter. saya suka loop while--. sedangkan loop tercepat di semua browser kecuali yang kita semua sangat suka ... chrome.
Lagi pula saya menulis fungsi pertama yang menggunakan while. Dan ya itu sedikit lebih cepat daripada fungsi yang ditemukan dalam artikel.tapi tidak cukup.unique2()
langkah selanjutnya gunakan js modern. Object.keys
saya mengganti yang lain untuk loop dengan Object.keys js1.7 ... sedikit lebih cepat dan lebih pendek (di krom 2x lebih cepat);). Tidak cukup!. unique3()
.
pada titik ini saya sedang berpikir tentang apa yang sebenarnya saya butuhkan dalam fungsi unik SAYA. saya tidak memerlukan array lama, saya ingin fungsi cepat. jadi saya menggunakan 2 saat loop + sambatan.unique4()
Tidak ada gunanya mengatakan bahwa saya terkesan.
chrome: 150.000 operasi per detik yang biasa melonjak menjadi 1.800.000 operasi per detik.
yaitu: 80.000 op / s vs 3.500.000 op / s
ios: 18.000 op / s vs 170.000 op / s
safari: 80.000 op / s vs 6.000.000 op / s
Bukti
http://jsperf.com/wgu atau lebih baik gunakan console.time ... microtime ... terserah
unique5()
hanya untuk menunjukkan kepada Anda apa yang terjadi jika Anda ingin mempertahankan array yang lama.
Jangan gunakan Array.prototype
jika kamu tidak tahu apa yang kamu lakukan. Saya hanya melakukan banyak salinan dan masa lalu. Gunakan Object.defineProperty(Array.prototype,...,writable:false,enumerable:false})
jika Anda ingin membuat prototipe asli.contoh: https://stackoverflow.com/a/20463021/2450730
Demo
http://jsfiddle.net/46S7g/
CATATAN: array lama Anda hancur / menjadi unik setelah operasi ini.
jika Anda tidak dapat membaca kode di atas tanyakan, baca buku javascript atau di sini ada beberapa penjelasan tentang kode pendek. https://stackoverflow.com/a/21353032/2450730
beberapa menggunakan indexOf
... jangan ... http://jsperf.com/dgfgghfghfghghgfhgfhfghfhgfh
untuk array kosong
!array.length||toUnique(array);