如何解决如何按键对一组对象进行分组?
蒂莫的回答是我会怎么做。简单_.groupBy
,并且允许在分组结构中的对象中有一些重复。
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 grouped = _.groupBy(cars, car => car.make);
console.log(grouped);
<script src='https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js'></script>
但是,OP 还要求删除重复的make
密钥。如果你想一路走下去:
var grouped = _.mapValues(_.groupBy(cars, 'make'),
clist => clist.map(car => _.omit(car, 'make')));
console.log(grouped);
产量:
{ audi:
[ { model: 'r8', year: '2012' },
{ model: 'rs5', year: '2013' } ],
ford:
[ { model: 'mustang', year: '2012' },
{ model: 'fusion', year: '2015' } ],
kia:
[ { model: 'optima', year: '2012' } ]
}
如果您想使用 Underscore.js 执行此操作,请注意其版本_.mapValues
名为_.mapObject
.
解决方法
有谁知道一种方法(如果可能的话,lodash)通过对象键对对象数组进行分组,然后根据分组创建一个新的对象数组?例如,我有一个汽车对象数组:
const cars = [
{
'make': 'audi','model': 'r8','year': '2012'
},{
'make': 'audi','model': 'rs5','year': '2013'
},{
'make': 'ford','model': 'mustang','model': 'fusion','year': '2015'
},{
'make': 'kia','model': 'optima',];
我想创建一个新的汽车对象数组,这些对象按以下方式分组make
:
const cars = {
'audi': [
{
'model': 'r8','year': '2012'
},{
'model': 'rs5','year': '2013'
},],'ford': [
{
'model': 'mustang',{
'model': 'fusion','year': '2015'
}
],'kia': [
{
'model': 'optima','year': '2012'
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。