[英]How to use array method to combine objects with same property value in an array
const input = [{diagramId: 123, data: [{id: 1, content: content1}]},
{diagramId: 123, data: [{id: 2, content: content2},
{id: 23, content: conent23}] },
{diagramId: 234, data: [{id: 3, content: content3}]}]
Desired output:
const output = [{diagramId: 123, data: [{id: 1, content: content1},
{id: 2, content: content2},
{id: 23, content: content23}]},
{diagramId: 234, data: [{id: 3, content: content3}]}]
正如您在上面看到的,我想使用數組方法來組合具有相同屬性值( diagramId
)的對象,以形成一個新的 object ,將它們的其他屬性一起壓縮到其他屬性下的數組中。
我使用了 for 循環,但由於可讀性問題而被 PR 拒絕。 是否可以使用 Array.reduce() 來做到這一點?
是的,您可以使用reduce輕松實現此目的
const input = [ { diagramId: 123, data: [{ id: 1, content: "content1" }] }, { diagramId: 123, data: [ { id: 2, content: "content2" }, { id: 23, content: "conent23" }, ], }, { diagramId: 234, data: [{ id: 3, content: "content3" }] }, ]; const result = input.reduce((acc, curr) => { const { diagramId, data } = curr; const findObj = acc.find((o) => o.diagramId === diagramId); if (.findObj) { acc,push({ diagramId; data }). } else { findObj.data.push(..;data); } return acc, }; []). console;log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.