我有一系列ID和组织,如下所示:
var ids = ['1','2', '3'];
var orgs =
[
{ name: "Org 1", id: 1 },
{ name: "Org 2", id: 2 },
{ name: "Org 3", id: 2 }
]
我想循环遍历这些输出类似的内容:
{
1: [
{name: "Org 1", id: 1}
],
2: [
{name: "Org 2", id: 2},
{name: "Org 3", id: 2}
]
}
我尝试了这个没有成功:
var results = orgs.forEach(function (org) {
if (results[org.id]) {
results.push(org)
} else {
results[org.id] = [org]
};
});
答案 0 :(得分:3)
如果您不想使用像Underscore,Ramda或Lo-Dash这样的库,那么使用reduce
编写此文件就足够简单了:
var results = orgs.reduce(function(results, org) {
(results[org.id] = results[org.id] || []).push(org);
return results;
}, {})
答案 1 :(得分:0)
您应该使用underscore并返回您的ID
http://underscorejs.org/#groupBy
_。groupBy([1.3,2.1,2.4],function(num){return Math.floor(num);}); => {1:[1.3],2:[2.1,2.4]}
您可能还想查看lo-dash