使用javascript从另一个数组中删除数组的元素

时间:2016-10-13 21:18:03

标签: javascript arrays

我有两个数组

a[] = [1,2,3,4]
b[] = [3,4]

需要从数组a中删除数组b的元素。

预期产出:

 a[] = [1,4]

3 个答案:

答案 0 :(得分:5)

我会使用过滤方法:

a = a.filter(function (item) {
    return b.indexOf(item) === -1;
});

答案 1 :(得分:1)

查看$.grep$.inArray的jQuery文档。

以下是代码的样子:

var first = [1,2,3,4],
    second = [3,4];

var firstExcludeSecond = $.grep(first, function(ele, ix){ return $.inArray(ele, second) === -1; });

console.log(firstExcludeSecond);

基本上相当于迭代第一个数组($ .grep)并确定给定值是否在第二个数组($ .inArray)中。如果从$ .inArray返回的值是-1,则第一个数组中的值不存在于第二个数组中,所以我们抓住它。

答案 2 :(得分:0)

我循环遍历第二个数组,并使用indexOf检查值是否在第一个数组中。如果是,我使用splice将其删除。

var a = [1,2,3,4,5];
var b = [3,4,5];

b.forEach(function(val){
  var foundIndex = a.indexOf(val);
  if(foundIndex != -1){
    a.splice(foundIndex, 1);
  }
});

或者

var a = [1,2,3,4,5];
var b = [3,4,5];

a = a.filter(x => b.indexOf(x) == -1);

对于IE 8,

for(var i = 0; i < b.length; i++){
   var val = b[i];
   var foundIndex = a.indexOf(val);
   if(foundIndex != -1){
      a.splice(foundIndex, 1);
   }
}