【发布时间】:2020-06-04 16:00:48
【问题描述】:
我正在努力想出一种有效的方法来按属性将对象数组分组到另一个数组中。
我从相关问题和答案中检查了一些解决方案,但努力实现所需的数据结构。
样本数据传入数据(取自this q)
const 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'
}, ];
这是我想要实现的目标:
const carsTransformed = [{
'audi': [{
'model': 'r8',
'year': '2012'
}, {
'model': 'rs5',
'year': '2013'
},],
},
{
'ford': [{
'model': 'mustang',
'year': '2012'
}, {
'model': 'fusion',
'year': '2015'
}],
},
{
'kia': [{
'model': 'optima',
'year': '2012'
}]
}
];
目前尝试使用
const arrayGroupBy = (array, property) => {
return array.reduce((map, object) => {
(map[object[property]] = map[object[property]] || []).push(object);
return map;
}, {});
};
尝试通过Object.entries(obj).map() 操作生成的对象得到一些奇怪的结果:(
我将不胜感激有关如何实现这一目标的任何想法。
编辑:尽量不使用任何第三方库。
【问题讨论】:
标签: javascript arrays object grouping