Tom Rudge
Tom Rudge

Reputation: 3272

.map values by grouping by key

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

Answers (1)

hgiasac
hgiasac

Reputation: 2233

You are misunderstanding how groupBy do. Using groupBy only is enough:

const result = _.groupBy(replaceName, 'newNumber')

Upvotes: 2

Related Questions