Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象数组过滤到对象中_Javascript_Arrays_Object - Fatal编程技术网

Javascript 将对象数组过滤到对象中

Javascript 将对象数组过滤到对象中,javascript,arrays,object,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] =

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

输入:

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

减少数据量,如下所示:

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;
}, {});
var输入=[
{“id”:1,“subid”:5},
{“id”:1,“subid”:9},
{“id”:2,“subid”:16},
{“id”:2,“subid”:27}
];
var输出=[];
对于(变量i=0;i
var输入=[
{“id”:1,“subid”:5},
{“id”:1,“subid”:9},
{“id”:2,“subid”:16},
{“id”:2,“subid”:27}
];
var输出=[];
对于(变量i=0;i
下划线实用程序对于数组和对象操作非常方便。试试这个:

var list = [{"id":1, "subid":5}, {"id":1,"subid":9},{"id":2,"subid":16}{"id":2, "subid":27}]   
 _.mapObject(_.groupBy(list, 'id'), function(val){          
       return val.map(function(obj){    
          return obj.subid
       })       
 })

下划线实用程序对于数组和对象操作非常方便。试试这个:

var list = [{"id":1, "subid":5}, {"id":1,"subid":9},{"id":2,"subid":16}{"id":2, "subid":27}]   
 _.mapObject(_.groupBy(list, 'id'), function(val){          
       return val.map(function(obj){    
          return obj.subid
       })       
 })

我只需遍历输入数组并检查是否存在现有属性,然后添加一个新对象或将其推送到现有数组中

var输入=[
{“id”:1,“subid”:5},
{“id”:1,“subid”:9},
{“id”:2,“subid”:16},
{“id”:2,“subid”:27}
];
var输出=[];
input.forEach(函数(a){
var existing=output.find(函数(b){
返回b.hasOwnProperty(a.id);
});
现有的
?现有[a.id]。推送(a.subid)
:output.push({[a.id]:[a.subid]});
});

控制台日志(输出)我只需遍历输入数组并检查是否存在现有属性,然后添加新对象或推送到现有数组

var输入=[
{“id”:1,“subid”:5},
{“id”:1,“subid”:9},
{“id”:2,“subid”:16},
{“id”:2,“subid”:27}
];
var输出=[];
input.forEach(函数(a){
var existing=output.find(函数(b){
返回b.hasOwnProperty(a.id);
});
现有的
?现有[a.id]。推送(a.subid)
:output.push({[a.id]:[a.subid]});
});

控制台日志(输出)喜欢它。不仅仅是我自己的答案。我将切换到下划线工具:)@vivekmaharah也可以查看lodash。喜欢它。不仅仅是我自己的答案。我将切换到下划线实用程序:)@vivekmaharah也可以查看lodash。