gpt4 book ai didi

javascript - 如果属性与数组中的值匹配,则过滤对象

转载 作者:行者123 更新时间:2023-11-30 07:19:53 27 4
gpt4 key购买 nike

我有一个看起来像这样的对象:

const faultGroup = 
[{
comments:"",
faults:
[{
id:31,
name: "speaker"
},
{
id:22
name: "earphones"
},
{
id:25
name: "keyboard"
}];
}];

我有一个包含 id 数组的数组

idArray = [25,22];

预期结果:

result = ["earphones", "keyboard"];

当前解决方案:

result = [];
faultGroup.map(fg => {
if (!!fg.faults) {
fg.faults.forEach(fault => {
for (let i = 0; i < idArray.length; i++) {
if (idArray[i] === fault.id) {
this.result.push(fault.name);
}
}
});
}
});

我可以知道最有效的方法吗? (不确定在这种情况下如何使用 filter 和 includes 方法)目前我正在使用 map 和 double for 循环的组合。感谢您的帮助!

最佳答案

您可以reduce faultGroup 数组,从每个项目中提取faults 数组并迭代它,如果id包含在idArray中:

const faultGroup = [{
comments: "",
faults: [{
id: 31,
name: "speaker"
},
{
id: 22,
name: "earphones"
},
{
id: 25,
name: "keyboard"
}
]
}];
const idArray = [25,22];
const result = faultGroup.reduce((a, { faults }) => {
if (faults) faults.forEach(({ id, name }) => {
if (idArray.includes(id)) a.push(name);
});
return a;
}, []);
console.log(result);

关于javascript - 如果属性与数组中的值匹配,则过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53627691/

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