Это, вероятно, один из самых быстрых способов окончательного удаления дубликатов из массива
В 10 раз быстрее, чем большинство функций здесь. И в 78 раз быстрее в сафари
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);
- Тест: http://jsperf.com/wgu
- Демо: http://jsfiddle.net/46S7g/
- Подробнее: https://stackoverflow.com/a/25082874/2450730
если вы не можете прочитать приведенный выше код, спросите, прочитайте книгу по javascript или вот несколько объяснений более короткого кода. https://stackoverflow.com/a/21353032/2450730
EDIT
Как указано в комментариях, эта функция возвращает массив с уникальными значениями, однако вопрос требует найти дубликаты. в этом случае простая модификация этой функции позволяет помещать дубликаты в массив, а затем с помощью предыдущей функции toUnique
удаляет дубликаты дубликатов.
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));