Это, вероятно, один из самых быстрых способов постоянного удаления дубликатов из массива в
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
РЕДАКТИРОВАТЬ
Как указано в комментариях, эта функция возвращает массив с уникальными значениями, однако вопрос требует найти дубликаты. в этом случае простая модификация этой функции позволяет помещать дубликаты в массив, а затем использование предыдущей функции 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));