/ *
Метод массива indexOf слишком полезен, чтобы его игнорировать, если вы что-то делаете с массивами. Здесь есть прокладка, основанная на коде Mozilla.
Метод add, показанный здесь, работает как push, но он добавляет элемент только в том случае, если его еще нет в массиве. Вы можете добавить несколько элементов с несколькими аргументами.
'merge' добавит все 'новые' элементы из вызывающего массива в массив, отправленный в качестве аргумента,
* /
if(!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;
}
}
Array.prototype.add= function(){
var what, a= arguments, i= 0, L= a.length;
while(i<L){
what= a[i++];
if(this.indexOf(what)=== -1) this.push(what);
}
return this;
}
Array.prototype.merge= function(target){
return this.add.apply(target, this);
}
var a1= [1, 2, 3, 4, 5, 6], a2= [2, 4, 6, 8, 10];
a1.merge(a2)
/* returned value: (Array)
2, 4, 6, 8, 10, 1, 3, 5
*/