gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:44:36 25 4
gpt4 key购买 nike

我有两个数组,例如,

数组 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com