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。