使用javascript创建动态键和值

时间:2017-08-17 06:56:53

标签: javascript object javascript-objects

我是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} 
    }
 }

1 个答案:

答案 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];

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