我有很多东西。我将把项目串联如下:

obj2 = [{ rowNumber:33, rows:[{item1:'ItemOne'}]}, { rowNumber:44, rows:[{item2:'ItemTwo'}]}]
===> new obj = [{ rowNumber:77, rows:[{item1:'ItemOne'},{item2:'ItemTwo'}]}]

这是我的密码
let newobj=obj2.reduce((current , next)=> {
     current.rowNumber+next.rowNumber;
     current.rows.push(next.rows);
     return next;
});
console.log(JSON.stringify(newobj))

实际上,这只是第二个元素
{"rowNumber":44,"rows":[{"item2":"ItemTwo"}]}

PS:我用的是Typescript

最佳答案

您没有更新current对象(实际上应该称为accumulator)。此外,您正在推至current但返回next。这是一个固定版本。

let obj2 = [{ rowNumber:33, rows:[{item1:'ItemOne'}]}, { rowNumber:44, rows:[{item2:'ItemTwo'}]}];

let newobj = obj2.reduce((current , next) => {
     current.rowNumber += next.rowNumber;
     current.rows.push(...next.rows);
     return current;
});
console.log(JSON.stringify(newobj))

我会把Read函数中的变量名固定到(acc, current) => {...},以便遵守约定,这样就可以清楚地看到,您想使用current更新acc,然后返回acc

关于javascript - 减少对象数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52937022/

10-10 00:28
查看更多