首页 > 解决方案 > javascript中的元素分组

问题描述

我通过对另一个列表中的元素进行分组来创建这个列表(使用 d3.nest)

array = [ {key: "6S", values: [{Id: "1234a", ECTS: 3},
                               {Id: "1234b", ECTS: 3}]}, 
          {key: "7S", values: [{Id: "1534a", ECTS: 5},
                               {Id: "154b", ECTS: 4},]} ]

从这个列表中,我想创建这样的东西:

array = [{key: "6S", values: { 3: [{Id: "1234a"}, {Id: "1234b"}]}},

        {key: "7S", values: { 5: [{Id: "1534a"}], 4: [{Id:"1534a"}]}}]

实际上,我想通过 ECTS 对每个键(6S、7S)的数据进行分组。我试过 _.groupBy.... 但没有用。问题是我要分组的元素是对象,已经分组了一次。关于如何对项目进行分组的任何想法?

标签: javascriptarrays

解决方案


您可以尝试以下

var array = [ {key: "6S", values: [{Id: "1234a", ECTS: 3}, {Id: "1234b", ECTS: 3}]},  {key: "7S", values: [{Id: "1534a", ECTS: 5}, {Id: "154b", ECTS: 4},]} ];


 array.forEach((obj) => {
    var values = {};
    // Iterate over array and create the updated value
    obj.values.forEach((item) => {
       values[item.ECTS] = values[item.ECTS] || [];
       values[item.ECTS].push({"Id" : item.Id});
    });
    // Set the updated value in object
    obj.values = values;

});
                  
console.log(array);


推荐阅读