var arr1=["a","b","b","c","c","d"];
var arr2=["b","c",];
arr1 имеет повторяющиеся значения, которые перечислены в arr2. Теперь я хочу удалить повторяющиеся значения из arr1, используя arr2. Является ли это возможным?
var arr1=["a","b","b","c","c","d"];
var arr2=["b","c",];
arr1 имеет повторяющиеся значения, которые перечислены в arr2. Теперь я хочу удалить повторяющиеся значения из arr1, используя arr2. Является ли это возможным?
Я бы использовал метод .filter()
массива.
arr1 = arr1.filter(function (val) {
return arr2.indexOf(val) === -1;
});
Для IE8 или более ранней версии этот код должен работать:
arr1 = arr1.filter(function (val) {
var i;
for (i = 0; i < arr2.length; i += 1) {
if ( val === arr2[i] ) {
return false;
}
}
return true;
});
Firefox 23.0.1
. Что скажет ваш браузер, если вы это сделаете? alert(Array.prototype.indexOf);
? Если он предупреждает функцию, мой код должен работать. Если нет... это действительно странно, потому что filter и indexOf были добавлены в одну и ту же версию JavaScript.
- person Joe Simmons; 26.09.2013
.filter()
поддерживается? Странный. Я обновил свой ответ для спрашивающего, для IE8 и ранее.
- person Joe Simmons; 26.09.2013
.filter()
изначально.
- person Qantas 94 Heavy; 26.09.2013
вы можете использовать непосредственно для удаления дубликатов из массива1 как
$(document).ready(function(){
var arr1=["a","b","b","c","c","d"];
var arr2=[];
$.each(arr1, function(i,el){
if($.inArray(el, arr2) === -1)
arr2.push(el);
});
alert(arr2);
});
тут можно понаблюдать..
http://jsfiddle.net/nPeaV/7410/