javascript中的元素分组
我用d3.nest将另一个列表中的元素分组,从而创建了这个列表javascript中的元素分组,javascript,arrays,Javascript,Arrays,我用d3.nest将另一个列表中的元素分组,从而创建了这个列表 array = [ {key: "6S", values: [{Id: "1234a", ECTS: 3}, {Id: "1234b", ECTS: 3}]}, {key: "7S", values: [{Id: "1534a", ECTS: 5}, {Id: "154b", ECTS:
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的数据进行分组。
我试过用群比。。。。但它不起作用。问题是我想要分组的元素是对象,已经分组过一次了。
你知道我如何将这些项目分组吗?你可以试试下面的方法
var数组=[{key:6S,值:[{Id:1234a,ECTS:3},{Id:1234b,ECTS:3}]},{key:7S,值:[{Id:1534a,ECTS:5},{Id:154b,ECTS:4},]};
array.forEachobj=>{
var值={};
//迭代数组并创建更新的值
obj.values.forEachitem=>{
值[item.ECTS]=值[item.ECTS]| |[];
值[item.ECTS].push{Id:item.Id};
};
//在对象中设置更新的值
obj.values=值;
};
console.logarray
变量数组=[{
关键词:6S,
价值观:[{
编号:1234a,
ECTS:3
},
{
编号:1234b,
ECTS:3
}
]
},
{
关键:7秒,
价值观:[{
识别号:1534a,
ECTS:5
},
{
编号:154b,
ECTS:4
},
]
}
]
array=array.mapfunctionv1{
var updatedVal=v1.values.reducefunctionobj,v2{
obj[v2.ECTS]=obj[v2.ECTS]| |[];
对象[v2.ECTS]。推送{
Id:v2.Id
};
返回obj;
}, {};
v1.values=updatedVal;
返回v1;
};
console.logarray;