/ *
Метод indexOf объекта Array полезен для сравнения элементов массива.
IE - единственный крупный браузер, который изначально не поддерживает его, но его легко реализовать:
* /
Array.prototype.indexOf= Array.prototype.indexOf || function(what, i){
i= i || 0;
var L= this.length;
while(i<L){
if(this[i]=== what) return i;
++i;
}
return -1;
}
function getarrayduplicates(arg){
var itm, A= arg.slice(0, arg.length), dups= [];
while(A.length){
itm= A.shift();
if(A.indexOf(itm)!= -1 && dups.indexOf(itm)== -1){
dups[dups.length]= itm;
}
}
return dups;
}
var a1 = [1, 22, 3, 2, 2, 3, 3, 4, 1, 22, 7, 8, 9];
оповещения (getarrayduplicates (а1));
Для очень больших массивов может быть быстрее удалить дубликаты из массива по мере их обнаружения, чтобы они больше не просматривались:
function getarrayduplicates(arg){
var itm, A= arg.slice(0, arg.length), dups= [];
while(A.length){
itm= A.shift();
if(A.indexOf(itm)!= -1){
dups[dups.length]= itm;
while(A.indexOf(itm)!= -1){
A.splice(A.indexOf(itm), 1);
}
}
}
return dups;
}