Использовать один массив строк для соединения другого массива?


Итак, у меня есть один массив:

var array1 = ['one', 'two', 'three', 'four', 'five']

И еще:

var array2 = ['two, 'four']

Как я могу удалить все строки из array2 из array1?

4 4

4 ответа:

Просто используйте Array#filter() и еще Array#indexOf() с побитовым не ~ оператор для проверки.

~ является побитовым операторомне . Он идеально подходит для использования с indexOf(), потому что indexOf возвращает, если найден индекс 0 ... n , а если нет -1:

value  ~value   boolean
-1  =>   0  =>  false
 0  =>  -1  =>  true
 1  =>  -2  =>  true
 2  =>  -3  =>  true
 and so on 

var array1 = ['one', 'two', 'three', 'four', 'five'],
    array2 = ['two', 'four'];

array1 = array1.filter(function (a) {
    return !~array2.indexOf(a);
});

document.write("<pre>" + JSON.stringify(array1, 0, 4) + "</pre>");

Попробуйте это.

array2.forEach(item => array1.splice(array1.indexOf(item),1));

В jquery с методом inArray:

for(array1)
  var idx = $.inArray(array1[i], array2);
  if (idx != -1) {//-1 not exists 
     array2.splice(idx, 1);
  } 

}

var array1 = ['one', 'two', 'three', 'four', 'five']
var array2 = ['two', 'four']
    
array1 = array1.filter(function(item){
   return array2.indexOf(item) === -1
})
// ['one', 'three', 'four', 'five']

document.write(array1)