【问题标题】:Remove elements of an array from another array using javascript使用javascript从另一个数组中删除数组的元素
【发布时间】:2016-10-13 21:18:02
【问题描述】:

我有两个数组

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

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

预期输出:

 a[] = [1,4]

【问题讨论】:

  • 你的意思是 b[] = [2,3] 吗?得到你所期望的 a[] = [1,4]。

标签: javascript arrays


【解决方案1】:

我会使用过滤方法:

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

【讨论】:

  • 不应该是:return b.indexOf(item) == -1;
  • @Kolby 感谢您的更正。右括号必须在 item 之后,比较运算符应该是 === 而不是 !==
【解决方案2】:

查看$.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,则第一个数组的值在第二个数组中不存在,因此我们抓取它。

【讨论】:

    【解决方案3】:

    我正在循环第二个数组,并使用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);
       }
    }
    

    【讨论】:

    • array.prototype.forEach - ECMAScript5 中的新功能(即不是 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    • @freedomn-m 是对的。forEach 是 ECMAScript5,所以您要么需要转译,要么使用具有 forEach 方法的库,或者只使用 for 循环。逻辑保持不变。
    • 对于 IE 8,for(var i = 0; i
    • 添加了 IE8。谢谢@Aruna
    【解决方案4】:
    const array_diff = (a, b) => a.filter(v => !b.includes(v))
    

    如果你想支持IE

    const array_diff = (a, b) => a.filter(v => b.indexOf(v) === -1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-12
      相关资源
      最近更新 更多