开发者社区> 问答> 正文

如何通过键对对象数组进行分组

有谁知道(如果可能的话,也用破折号)通过对象键对对象数组进行分组然后根据分组创建新的对象数组的方法吗?例如,我有一系列汽车对象:

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' }, ]; 我想制作一组新的汽车对象,并按以下类别分组make:

var cars = { 'audi': [ { 'model': 'r8', 'year': '2012' }, { 'model': 'rs5', 'year': '2013' }, ],

'ford': [
    {
        'model': 'mustang',
        'year': '2012'
    }, {
        'model': 'fusion',
        'year': '2015'
    }
],

'kia': [
    {
        'model': 'optima',
        'year': '2012'
    }
]

} 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 23:14:46 356 0
1 条回答
写回答
取消 提交回答
  • 在普通的Javascript中,您可以使用Array#reduce一个对象

    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' }], result = cars.reduce(function (r, a) { r[a.make] = r[a.make] || []; r[a.make].push(a); return r; }, Object.create(null));

    console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }

    2020-02-07 23:14:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载