Bu, muhtemelen bir dizideki yinelenenleri,
buradaki en işlevlerden 10 kat daha hızlı bir şekilde kalıcı olarak kaldırmanın en hızlı yollarından biridir .
function toUnique(a,b,c){//array,placeholder,placeholder
b=a.length;
while(c=--b)while(c--)a[b]!==a[c]||a.splice(c,1)
}
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
toUnique(array);
console.log(array);
- Test: http://jsperf.com/wgu
- Demo: http://jsfiddle.net/46S7g/
- Daha fazla: https://stackoverflow.com/a/25082874/2450730
yukarıdaki kodu okuyamazsanız, bir javascript kitabı okuyun veya daha kısa kod hakkında bazı açıklamalar. https://stackoverflow.com/a/21353032/2450730
DÜZENLE
Yorumlarda belirtildiği gibi, bu işlev benzersiz bir dizi döndürür, ancak soru yinelenenleri bulmanızı ister. bu durumda, bu işlevde yapılan basit bir değişiklik, kopyaların bir diziye itilmesine izin verir, ardından önceki işlevi kullanmak toUnique
, kopyaların kopyalarını kaldırır.
function theDuplicates(a,b,c,d){//array,placeholder,placeholder
b=a.length,d=[];
while(c=--b)while(c--)a[b]!==a[c]||d.push(a.splice(c,1))
}
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
toUnique(theDuplicates(array));