有没有人知道通过对象键对对象数组进行分组,然后根据分组创建新的对象数组的方法(如果可能的话,也可以使用Letash)?例如,我有一个汽车对象数组:

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'
    },
];

我想创建一个新的汽车对象数组,按make分组:

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

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

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

推荐答案

Timo's answer是我应该做的.简单_.groupBy,并允许在分组 struct 中的对象中进行一些复制.

然而,OP也要求移除重复的make把 keys .如果你想一直走下go :

var grouped = _.mapValues(_.groupBy(cars, 'make'),
                          clist => clist.map(car => _.omit(car, 'make')));

console.log(grouped);

yields :

{ audi:
   [ { model: 'r8', year: '2012' },
     { model: 'rs5', year: '2013' } ],
  ford:
   [ { model: 'mustang', year: '2012' },
     { model: 'fusion', year: '2015' } ],
  kia: 
   [ { model: 'optima', year: '2012' } ] 
}

如果你想用下划线来做这件事.js,注意它的_.mapValues版本叫做_.mapObject.

Javascript相关问答推荐

HTML/JavaScript函数未执行

单击按钮后未清除 Select

在卡信息之间切换

提交表格后保留Web表格中的收件箱值?

网页自检测外部元素无法加载

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

react—router v6:路由没有路径

我们如何从一个行动中分派行动

如果Arrow函数返回函数,而不是为useEffect返回NULL,则会出现错误

如何迭代叔父元素的子HTML元素

Eval vs函数()返回语义

NG/Express API路由处理程序停止工作

根据一个条件,如何从处理过的数组中移除一项并将其移动到另一个数组?

创建以键值对为有效负载的Redux Reducer时,基于键的类型检测

如何在我的Next.js项目中.blob()我的图像文件?

无法重定向到Next.js中的动态URL

WebSocketException:远程方在未完成关闭握手的情况下关闭了WebSocket连接.&#三十九岁;

在D3条形图中对具有相同X值的多条记录进行分组

在Java脚本中录制视频后看不到曲目

在HTML5画布上下文中使用putImageData时,重载解析失败