Reputation: 3272
My data coming in looks like:
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" }
I want to group the values that are the same for newNumber
.
The output will be similar to this:
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" }]
I have tried a few ways, the closest I have come to is:
const result = _.mapValues(replaceName, function(group, key) {
return key === 'newNumber' ? _.groupBy(group, 'newNumber') : group;
});
Which I know does not work in my scenario. The key of the new object also matches newNumber as in my expected result.
Any help here would be appreciated. Using lodash and react.
Upvotes: 0
Views: 99
Reputation: 2233
You are misunderstanding how groupBy
do. Using groupBy
only is enough:
const result = _.groupBy(replaceName, 'newNumber')
Upvotes: 2