基于this https://stackoverflow.com/a/40774906/3254598例如,我想以稍微不同的方式按对象进行分组。结果应该如下:
[{
key: "audi"
items: [
{
"make": "audi",
"model": "r8",
"year": "2012"
},
{
"make": "audi",
"model": "rs5",
"year": "2013"
}
]
},
...
]
我怎样才能做到这一点?我编写的以下代码没有达到我想要的效果:
reduce(function (r, a) {
r[a.art] = {key: r[a.art], items: []} || [];
r[a.art].items.push(a);
return r;
}, Object.create(null));
您可以使用哈希表进行分组make
以及所需结果的数组。
对于每个组hash
,一个新对象,例如
{
key: a.make,
items: []
}
创建并推送到结果集。
哈希表是用一个真正的空对象初始化的。没有原型,以防止碰撞。
var cars = [{ make: 'audi', model: 'r8', year: '2012' }, { make: 'audi', model: 'rs5', year: '2013' }, { make: 'ford', model: 'mustang', year: '2012' }, { make: 'ford', model: 'fusion', year: '2015' }, { make: 'kia', model: 'optima', year: '2012' }],
hash = Object.create(null),
result = [];
cars.forEach(function (a) {
if (!hash[a.make]) {
hash[a.make] = { key: a.make, items: [] };
result.push(hash[a.make]);
}
hash[a.make].items.push(a);
});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)