javascript - 从数组中删除已删除的值

标签 javascript arrays angular typescript filter

我有两个数组,例如,

数组 1:

    deletedValuesfromArray =
     [
        { "property_name": "Property three", "property_type": 4, "property_required": true, "property_origin": 2 }, 
        { "property_name": "rstywrtre", "property_type": 3, "property_required": true, "property_origin": 1 }
     ]

数组2:

  normalArray =
   [
    { "property_name": "Property one", "property_type": 4, "property_required": true, "property_origin": 1 },
     { "property_name": "Property two", "property_type": 5, "property_required": true, "property_origin": 1 }, 
     { "property_name": "Property three", "property_type": 4, "property_required": true, "property_origin": 2 }, 
     { "property_name": "rstywrtre", "property_type": 3, "property_required": true, "property_origin": 1 }
   ]

我想比较两个数组并过滤数组以在删除 deletedValuesfromArray(数组 1)后获取新数组。

为此我尝试了以下方法,

let newArray = this.normalArray.filter(function (val) {
  return this.deletedValuesfromArray.indexOf(val) == -1;
});
console.log(newArray);

但它不起作用..

预期输出是,

新数组

   [
     { "property_name": "Property one", "property_type": 4, "property_required": true, "property_origin": 1 },
     { "property_name": "Property two", "property_type": 5, "property_required": true, "property_origin": 1 }
   ]

Stackblitz我已经尝试过了

这些值也不会是唯一的,它可能具有任何对象的完整副本。

如何比较并删除普通数组中删除的值并得到新数组?

最佳答案

您的 filter 谓词不起作用,因为您不能仅将 normalArray 中的对象与 deletedValuesfromArray 中的对象进行比较:

indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).

--Array.indexOf()

换句话说,

{ "property_name": "Property one", "property_type": 4, "property_required": true, "property_origin": 1 } === { "property_name": "Property one", "property_type": 4, "property_required": true, "property_origin": 1 }
// > false

要使过滤器工作,您需要实现一个比较函数。请参阅How to determine equality for two JavaScript objects?一些想法。

关于javascript - 从数组中删除已删除的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301255/

相关文章:

javascript - getJSON 函数的返回值

javascript - 我可以从网站上读取 'real' 移动 GPS 坐标吗?

javascript - 构造 php 数组以传递给谷歌饼图 arrayToDataTable

javascript - 将 javascript "almost arrays"转换为 "arrays"最干净的方法是什么?

angular - 如何将数据从模态传递到组件?

html - 在 HTML/Bootstrap/angular2 中的动态填充下拉列表中预选外来内容

javascript - 如何使用switch比较值之间的值

PHP MYSQL 消除表中的逗号

arrays - 用固定颜色构建规则图案

angular - 在 angular2 中迁移到 RC4 后的问题