我有以下数组
const prod = [
{name:'Test1',vals:[12]},
{name:'Test1', vals:[14]},
{name:'Test2', vals:[19]}
//other array items
]
我想做的是将两个 Test1 组合成一个 vals 数组,这样最终的数组就会有
const finalprod = [
{name:'Test1',vals:[12,14]},
{name:'Test2', vals:[19]}
//other array items
]
所以我试过了
prod.forEach(item=>{
//check if name is contained in the array -am stuck here
});
我对如何进行感到困惑。我如何继续获取最终数组?
最佳答案
使用reduce
代替forEach
,查找累加器中的项,如果存在则将vals与当前元素的值合并,否则就将其插入累加器:
const prod = [
{name:'Test1',vals:[12]},
{name:'Test1', vals:[14]},
{name:'Test2', vals:[19]}
]
const finalprod = prod.reduce((acc, curr) => {
const ndx = acc.findIndex(e => e.name === curr.name);
if (ndx > -1)
acc[ndx].vals = [...acc[ndx].vals, ...curr.vals];
else
acc.push(curr);
return acc;
}, []);
console.log(finalprod);
关于Javascript 检查重复项并添加重复的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57794781/