gpt4 book ai didi

javascript - 用嵌套的 for 循环比较 2 个数组

转载 作者:行者123 更新时间:2023-11-30 09:20:06 24 4
gpt4 key购买 nike

我有 2 个数组:

a = [{name:"test3", input:[{val:3}]}, {name:"ss", input:[{val:84}]},{name:"sss", input:[{val:86}]},{name:"test", input:[{val:6}]}, {name:"some", input:[{val:8}]}]

a2 = [{name: "dd", field:3},{name: "dd", field:6}]

现在我尝试使用 `

从两个数组中获取唯一值

过滤器:

    a.forEach(function(i){
i.input.forEach(function(j){
a2.filter(function(k){return j.val !== k.field;});
});})

然后我想使用:forEach(function(p){p.remove()});//删除唯一值

所以我将第一个数组中的 val 值与第二个数组中的 field 值进行比较:

预期结果:

[{name:"ss", input:[{val:84}]},{name:"sss", input:[{val:86}]},{name:"some", input:[{val:8}]}]  // these are the ones whose `val` from `a` does not match with the `field` from `a2`

上面的代码没有返回任何内容,知道可能遗漏了什么吗?

最佳答案

我认为有一个更简单的方法:

  1. 创建将用于过滤数据的值的列表。
  2. 用它过滤您的数据。

const a = [{name: "test3", input: [{val: 3 }] }, {name: "ss", input: [{val: 84 }] }, {name: "sss", input: [{val: 86 }] }, {name: "test", input: [{val: 6 }] }, {name: "some", input: [{val: 8 }] } ]; 
const a2 = [{name: "dd", field: 3 }, {name: "dd", field: 6 }];

const filterBy = a2.map(v => v.field); // [3, 6]
const res = a.filter(el => !el.input.some(input => filterBy.includes(input.val)))

console.log(res)

关于javascript - 用嵌套的 for 循环比较 2 个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52302294/

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