gpt4 book ai didi

javascript - 嵌套数组对象与另一个元素数组进行比较并使用 Javascript 或 ES6 创建新数组

转载 作者:行者123 更新时间:2023-11-28 16:58:44 25 4
gpt4 key购买 nike

我有一个复杂的数组,如下所示

sectionDetail = [{id: 1, name:'ma'}, {id: 2, name:'na'}, {id: 3, name:'ra'}, {id: 4, name:'ka'}, {id: 5, name:'pa'}];

abc = [{id:'1', name:'zam', sections:['1',4]}, {id:'2', name:'dam', sections:['3']}, {id:'3', name:'nam', sections:['2','4']}];

现在我必须循环遍历各个部分的 abc,以将数组元素替换为其各自的 sectionDetail

我尝试将其循环到一个新变量,但我的部分每次都会被替换。下面是我尝试过的代码。

const matchingBoost = [];
const getCategoryBasedBoostList = [];
abc.forEach((item, i) => {
sectionDetail.forEach((val, index) => {
item.section.forEach((value, x) => {
if (value == val.Id) {
matchingBoost.push(val);
}
});
});
getCategoryBasedBoostList.push({
Name: item.Name,
Boost: matchingBoost
});
});

所以基本上我正在寻找一个像这样的新数组

xyz = [{name:'zam',  sections:[{id: 1, name:'ma'}, {id: 4, name:'ka'}]},
{name:'dam', sections:[{id: 3, name:'ra'}]}, {name:'nam', sections:[{id: 2, name:'na'}, {id: 4, name:'ka'}]}];

希望我说得有道理,并希望得到一些回应。

最佳答案

您基本上可以根据其中的 object.id 是否包含在 sections 中来过滤 sectionDetail 中的部分abc.在这两种情况下,我都将索引映射到数字,因为一个是字符串,另一个是整数。

sectionDetail = [{id: 1, name:'ma'}, {id: 2, name:'na'}, {id: 3, name:'ra'}, {id: 4, name:'ka'}, {id: 5, name:'pa'}];

abc = [{id:'1', name:'zam', sections:['1',4]}, {id:'2', name:'dam', sections:['3']}, {id:'3', name:'nam', sections:['2','4']}];

xyz = abc.map(item => ({...item, sections: sectionDetail.filter(sect => item.sections.map(id => parseInt(id)).includes(parseInt(sect.id)))}));

console.log(xyz);

关于javascript - 嵌套数组对象与另一个元素数组进行比较并使用 Javascript 或 ES6 创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58310192/

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