我是JavaScript新手。我有一个嵌套对象,我希望能够重新排序键/值对。我尝试在网上很多地方寻找解决方案,但大多数人都找到了对二维数组进行排序的答案,没有这种复杂程度。
我的对象看起来像这样:
id:{
Category1 : {
a : {count:1, volume:5}
b : {count:2, volume:10}
}
Category2: {
a : {count:4, volume:8}
b : {count:10, volume:4}
}
}
我希望根据名称而不是类别对其进行排序。汇总结果:
id:{
a : {
Category1 : {count:1, volume:5}
Category2 : {count:4, volume:8}
}
b: {
Category1 : {count:2, volume:10}
Category2 : {count:10, volume:4}
}
}
答案 0 :(得分:1)
您可以使用
执行此操作
let id = {
Category1 : {
a : {count:1, volume:5},
b : {count:2, volume:10}
},
Category2: {
a : {count:4, volume:8},
b : {count:10, volume:4}
}
}
for(obj in id){
for(obj2 in id[obj]){
id[obj2] = id[obj2] || {};
id[obj2][obj] = id[obj][obj2];
}
delete id[obj];
}
console.log(id);

在此代码中
for(obj in id)
遍历id的所有属性,因此obj将在集合{" Category1"," Category2"}中,id [obj]将引用子对象
for(obj2 in id[obj])
遍历子对象的属性,因此obj2将在集合中{" a"," b"}
id[obj2] = id[obj2] || {};
如果id已经存在,则初始化id的新属性,即id [" a"]和id [" b"]
id[obj2][obj] = id[obj][obj2];
将子子对象({count:1,volume:5})分配给子属性obj中的新属性
delete id[obj];
最后删除当前属性,因为它不再使用了