基于相同的属性合并对象列表中的值

2022-03-23 00:00:00 javascript underscore.js
有一点背景知识,这来自于我对其使用的一个已提交的表单 我有一个类似这样的对象列表。

[
  {name: 0, value: 'waffles'},
  {name: 0, value: 'pancakes'},
  {name: 0, value: 'french toast'},
  {name: 1, value: 'pancakes'}
]

我想将具有相同名称属性的所有内容放在一起。例如,

[
  {name: 0, value: ['waffles', 'pancakes', 'french toast']},
  {name: 1, value: ['pancakes']}
]

如何做这件事?我尝试过的所有操作都只能为每个姓名键显示一个答案。


解决方案

应该可以:

var newlist = _.map(_.groupBy(oldlist, "name"), function(v, n) {
    return {name: n, values: _.pluck(v, "value")};
});

相关文章