javascript - 将对象数组过滤为对象

标签 javascript arrays object

如何将以下这些输入转换为输出。

输入:

[{"id":1, "subid":5}, 
{"id":1, "subid":9}, 
{"id":2, "subid":16}, 
{"id":2, "subid":27}]

输出:

[{1:[5,9]},
{2:[16,27]}]

这是我目前尝试过的:

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

最佳答案

像这样减少数据:

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;
}, {});

关于javascript - 将对象数组过滤为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34094732/

相关文章:

javascript - 自合并对象 - lodash

PHP 表单回显 Post 变量不起作用

javascript - 如何使 MDL 菜单在单击后保持打开状态?

javascript - React Native,如何用FlatList实现拉动刷新?

java - 将两个 ArrayList 转换为 String[][]

c++ - 为什么数组的维数是其类型的一部分?

c# - 函数返回一个空的 DataTable,但我可以看到正在导入 "individual"个元素

javascript - 如果 src 是 base64 字符串,如何获取新创建的 Image() 的文件大小?

Javascript 数组和对象比较

javascript - 我如何在 JavaScript 中对这个数组进行排序?