我对JavaScript很陌生。我有一个嵌套对象,我希望能够对键/值对重新排序。我尝试在网上很多地方寻找解决方案,但大多找到了对 2-D 数组进行排序的答案,没有这种复杂程度。
我的对象看起来像这样:
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}
}
}
你可以使用
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["a"] 和 id["b"]
id[obj2][obj] = id[obj][obj2];
将子子对象({计数:1,体积:5}(分配给子属性 obj 中的新属性
delete id[obj];
最后删除当前属性,因为它不再有用