如何比较两个不同的数组并根据键从一个数组中删除对象?

安布吉·卡纳

我有两个数组对象,我想比较它们并从两个数组中删除值是否匹配。

Arr1 = [
        {id: "one", name: "one", status: "Active"}, 
        {id: "two", name: "two", status: "Active"}, 
        {id: "three", name: "three", status: "Active"}
      ]

Arr2 = [
        {pid: "one", order: 1}, 
        {pid: "two", order: 2}
      ]

现在我想要如果id === pid它不应该返回。

finalArr = [
            {id: "three", name: "three", status: "Active"}
           ]

我尝试了下面的解决方案,但不知何故它不起作用,它返回空数组。

finalArr  = Arr1.filter((a) => {
    Arr2.some((b) => {
        a['id'] === b['pid'];        
    });
});

如果您需要更多信息,请告诉我。我希望我能够表达我的关切。 4

谢谢!

尼克帕森斯

由于您标记了,您可以考虑使用该_.differenceWith()方法,该方法允许您提供一个比较器函数来指定您应该通过什么属性来获取差异。但是,如果您还没有使用 lodash,那么最好使用 vanilla 方法。

const arr1 = [{id: "one", name: "one", status: "Active"},  {id: "two", name: "two", status: "Active"}, {id: "three", name: "three", status: "Active"}];
const arr2 = [{pid: "one", order: 1}, {pid: "two", order: 2}];
const res = _.differenceWith(arr1, arr2, ({id}, {pid}) => id === pid);

console.log(res); // [{ "id": "three", "name": "three", "status": "Active" }]
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何比较两个数组,并从一个数组中删除两个数组中不匹配的多个项目?

如何从一个数组中删除一个数组中的对象?

如何比较两个包含用户详细信息的数组作为数组,并从一个数组中删除匹配的元素?

如何在Swift iOS中比较两个数组并从一个数组中删除匹配元素

如何根据键匹配值将两个对象数组合并为一个数组

比较两个具有对象的数组,并从第一个数组中删除重复项

如何将不同键的对象数组从一个数组合并为一个键

如何通过与另一个数组比较从一个数组中删除公共元素

如何通过比较同一数组中的两个键从数组中删除重复的对象?

比较对象键/值对中没有标准键的两个数组,将缺少的值推入javascript中的第一个数组

如何将两个不同的数组放在一个数组中

根据另一个数组中存在的键,从一组 javascript 对象中删除重复的键

比较两个数组,并显示第一个数组中具有第二个数组中的键的项

如何用键将两个数组组合成一个对象

比较两个对象数组,其中每个数组中的对象具有不同的属性

如何比较两个对象数组并为另一个数组中不相等的对象更改属性?

如何比较一个数组中的对象

比较两个数组对象数据并在JavaScript中将一个对象合并到数组中?

如何比较两个数组中的值以找到一个或多个匹配项?[jQuery]

jQuery将两个数组(键,值)关联到一个数组中

如何根据两个数组之间的差异来制作一个数组?

我如何从一个包含对象的大型数组中获得两个分离的数组?

如何将一个数组拆分为两个不同的数组?

从一个数组中读取两个int

从一个数组中删除与另一个对象数组相同的对象

如何在一个数组python中合并两个不同数组的ith值

一个查找函数,用于在两个不同的对象数组中匹配相同的 ID,并将键/值对插入到一个对象数组中

合并数组中的两个对象,其中值是一个数组

如何比较两个数组的大小并返回一个更大的数组(不是值或大小)?