将对象数组过滤为对象

Vai*_*ule 1 javascript arrays object

如何将以下输入转换为输出.

输入:

[{"id":1, "subid":5}, 
{"id":1, "subid":9}, 
{"id":2, "subid":16}, 
{"id":2, "subid":27}]
Run Code Online (Sandbox Code Playgroud)

输出:

[{1:[5,9]},
{2:[16,27]}]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

var newobj = new Object(); 
listOfObject.forEach(function(i) { 
   var id = i.id 
   newobj[id] = [] 
   newobj[id].push(i.subid) 
   return newobj 
})
Run Code Online (Sandbox Code Playgroud)

sta*_*lin 5

减少这样的数据:

var arrayData = [{"id":1, "subid":5}, {"id":1, "subid":9}, {"id":2, "subid":16}, {"id":2, "subid":27}];

var result = arrayData.reduce(function (result, obj) {
  var id = obj.id;
  result[id] = (result[id] || []);
  result[id].push(obj.subid);
  return result;
}, {});
Run Code Online (Sandbox Code Playgroud)