javascript - 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.... 但没有用。问题是我要分组的元素是对象,已经分组了一次。关于如何对项目进行分组的任何想法?
解决方案
您可以尝试以下
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);
推荐阅读
- kubernetes - How to list microk8s' containers with microk8s.ctr
- python - 如何用函数计算python中的唯一单词?
- c# - DatePicker 中日期的垂直对齐方式
- machine-learning - 如何限制 LSTM 模型中的序列预测以匹配特定模式?
- php - How to use ajax for saving image with php
- xpath - 如何更新具有最大子属性的 XML 属性节点?
- visual-studio-code - Keyboard shortcut to switch from source control "diff" mode back into normal editing?
- cassandra - Cassandra 写语义
- ubuntu - VMware error "Unable to change power state of virtual machine UPS: Operation inconsistent with current state"
- mysql - 改进 InnoDB 设置 - 导致无法解释的锁