首页 > 解决方案 > .map 值通过按键分组

问题描述

我进来的数据看起来像:

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 并做出反应。

标签: reactjsecmascript-6lodash

解决方案


你误解了怎么groupBy做。仅使用groupBy就足够了:

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

推荐阅读