簡體   English   中英

如何使用數組方法將具有相同屬性值的對象組合在一個數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM