У меня есть массив, который имеет несколько объектов, и один из свойств объекта может иметь dupes, а именно.Учетная запись.Теперь я хочу преобразовать этот массив в карту с ключом, имеющим значение свойства Account, и соответствующие дубликаты должны быть сохранены в виде массива с этим ключом на карте.
let arr = [];
arr.push({'Key':'1','Record':{'Account':'a','data':'A1'}});
arr.push({'Key':'2','Record':{'Account':'b','data':'123'}});
arr.push({'Key':'3','Record':{'Account':'a','data':'A2'}});
arr.push({'Key':'4','Record':{'Account':'a','data':'A3'}});
arr.push({'Key':'5','Record':{'Account':'c','data':'123'}});
const accIdMap= arr.reduce((map,obj) => (map[obj.Record.Account] = obj,map), {});
console.log(arr);
console.log(accIdMap);
Итак, на данный момент accIdMap просто получает однозначное сопоставление значения ключа, которое является последним нажатием в массиве, т.е. 4, но я хочу, чтобы выходная картаиметь значение в виде массива, где когда-либо дублировались ключи.Я пробовал сокращение, но это устраняет дублирующиеся значения, но я хочу, чтобы дублирующиеся значения представляли собой соответствующий массив.
Например
Как вывод
{
"a": {
"Key": "4",
"Record": {
"Account": "a",
"data": "A3"
}
},
"b": {
"Key": "2",
"Record": {
"Account": "b",
"data": "123"
}
},
"c": {
"Key": "5",
"Record": {
"Account": "c",
"data": "123"
}
}
}
Desired OutPut (ключи, которые были продублированы, должны иметь значения, добавленные как массив)
{
"a": [{"Key": "4","Record": {"Account": "a","data": "A3"}},{
"Key": "3",
"Record": {
"Account": "a",
"data": "A2"
}
},{
"Key": "1",
"Record": {
"Account": "a",
"data": "A1"
}
}],
"b": {
"Key": "2",
"Record": {
"Account": "b",
"data": "123"
}
},
"c": {
"Key": "5",
"Record": {
"Account": "c",
"data": "123"
}
}
}