【问题标题】:Javascript - delete array from arrayJavascript - 从数组中删除数组
【发布时间】:2017-04-13 10:29:59
【问题描述】:

我想从数组中的数组中删除元素(不记得它在数学中是如何命名的),例如:

var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
    arr2 = ['dos', 'cuatro'],
    arr3 = arr1.without(arr2);
//arr3 === ['uno', 'tres']

问候

【问题讨论】:

  • 在数学中称为矩阵
  • arr3 = arr1.filter( item => !arr2.includes(item) )
  • 我觉得这有点像this
  • 我认为您正在寻找的数学术语称为“设置差异”。

标签: javascript math


【解决方案1】:

Array#filter 可能会有所帮助。

var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
    arr2 = ['dos', 'cuatro'],
    arr3 = arr1.filter(v => arr2.indexOf(v) == -1);
    
    console.log(arr3);

【讨论】:

  • 我希望有一些本机功能,但谢谢!
  • @JimiAlvaro 原生函数? Array#filter 绝对是原生的 (:
【解决方案2】:

var arr1 = ['uno', 'dos', 'tres', 'cuatro'];
var arr2 = ['dos', 'cuatro'];

arr1 = arr1.filter(function(item){
  return arr2.indexOf(item) < 0;
});
console.log(arr1)

【讨论】:

    【解决方案3】:

    您可以使用Array#includes 并取否定结果。

    var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
        arr2 = ['dos', 'cuatro'],
        arr3 = arr1.filter(v => !arr2.includes(v));
        
    console.log(arr3);

    【讨论】:

      【解决方案4】:

      这是一个准备好的函数:

      function substractArrays (arr1, arr2) {
          if (arr2.length) {
            return arr1.filter(item => {
              return !arr2.some(elem => {
                return item.id === elem.id;
              });
            });
          } else {
            return arr1;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2012-08-02
        • 2012-03-10
        • 1970-01-01
        • 2015-01-28
        相关资源
        最近更新 更多