我输入的数据如下:
replaceName =
0: {Number: 1, newNumber:"1", name: "tom" }
1: {Number: 2, newNumber: "2", name: "john" }
2: {Number: 2, newNumber: "2", name: "Greg" }
3: {Number: 3, newNumber: "3", name: "Phil" }
4: {Number: 4, newNumber: "4", name: "tim" }
5: {Number: 4, newNumber: "4", name: "paul" }
我想对与newNumber
相同的值进行分组。
输出将类似于以下内容:
result = [
1: {Number: 1, newNumber:"1", name: "tom" }
2: [{Number: 2, newNumber: "2", name: "john" }, {Number: 2, newNumber: "2", name: "Greg" }]
3: {Number: 3, newNumber: "3", name: "Phil" }
4: [{Number: 4, newNumber: "4", name: "tim" }, {Number: 4, newNumber: "4", name: "paul" }]
我尝试了几种方法,最接近的是:
const result = _.mapValues(replaceName, function(group, key) {
return key === 'newNumber' ? _.groupBy(group, 'newNumber') : group;
});
我知道在我的情况下不起作用。新对象的键也与预期结果中的newNumber相匹配。
这里的任何帮助将不胜感激。使用lodash并做出反应。
答案 0 :(得分:2)
您误解了groupBy
的工作方式。仅使用groupBy
就足够了:
const result = _.groupBy(replaceName, 'newNumber')