使用 JavaScript 创建动态键和值



我对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];

最后删除当前属性,因为它不再有用

最新更新