簡體   English   中英

如何在 Javascript 的 Map 中添加對象數組

[英]How to add array of objects inside a Map in Javascript

我想要一個 Map ,其中鍵是唯一 ID,值將是與唯一 ID 對應的對象數組。 示例數據

const exampleData = [
{id: 1,
name: "Tony",
},
{id: 2,
name: "Lori"
},
{id: 2,
name: "Pete"
},
{id: 2,
name: "Brandon"
},
];

這是我嘗試過的

let map = new Map();
filteredArray.map(array => {
  map.set(array.assessmentId, [...map.get(array.assessmentId), array]); 
});

我想要的結果:

Map (
[key: 1,
value: [id: 1, Name: Tony],
],
[key:2,
value:[id: 2, Name: Lori],[id: 2, Name: Pete], [id: 2, Name: Brandon]
])

如果要對數據進行分組,可以減少項目並將每個項目連接到由id屬性鍵入的數組。

 const data = [ { id: 1, name: "Tony", }, { id: 2, name: "Lori" }, { id: 2, name: "Pete" }, { id: 2, name: "Brandon" }, ]; const grouped = new Map(Object.entries(data.reduce((result, item) => ({...result, [item.id]: [...(result[item.id] || []), item ] }), {}))); console.log(...grouped);
 .as-console-wrapper { top: 0; max-height: 100%;important; }

Output

{
  "1": [
    { "id": 1, "name": "Tony" }
  ],
  "2": [
    { "id": 2, "name": "Lori" },
    { "id": 2, "name": "Pete" },
    { "id": 2, "name": "Brandon" }
  ]
}

這是一個可重復使用的 function:

 const groupDataByKey = (data, key) => new Map(Object.entries(data.reduce((result, item) => ({...result, [item[key]]: [...(result[item[key]] || []), item ] }), {}))); const exampleData = [ { id: 1, name: "Tony", }, { id: 2, name: "Lori" }, { id: 2, name: "Pete" }, { id: 2, name: "Brandon" }, ]; console.log(...groupDataByKey(exampleData, 'id'));
 .as-console-wrapper { top: 0; max-height: 100%;important; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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