Javascript创建对象结构数组

时间:2018-10-31 02:58:05

标签: javascript arrays json typescript

在过去的两个小时中,我一直在尝试此操作,但是我找不到实现此目的的最简单方法。这是我的问题。

我具有如下的JSON结构

[{
    "groupid": 29,
    "percentage": 14
}, {
    "groupid": 29,
    "percentage": 22
}, {
    "groupid": 59,
    "percentage": 66,
}]

,我需要使用Javascript将其转换为以下内容。

{
    "29": [14, 22],
    "59": [66]
}

任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:4)

reduce输入到对象中。在每次迭代中,如果还不存在,请在累加器对象中的groupid键处创建一个数组,然后push到该数组:

const input = [{
    "groupid": 29,
    "percentage": 14
}, {
    "groupid": 29,
    "percentage": 22
}, {
    "groupid": 59,
    "percentage": 66,
}];
const output = input.reduce((a, { groupid, percentage }) => {
  if (!a[groupid]) a[groupid] = [];
  a[groupid].push(percentage);
  return a;
}, {});
console.log(output);