我有一个对象

var obj = {
   prop1 : {
      dummy1 : 0,
      dummy2 : 0,
      dummy3 : 0
   },
   prop2 : {
      dummy1 : 0,
      dummy2 : 0,
      dummy3 : 0
   }
};

我需要恢复它,以便 dummy 成为一个对象,然后 props 成为它的属性。

所以我需要我的对象看起来像这样
var obj = {
    dummy1 : {
        prop1 : 0,
        prop2 : 0
    },
    dummy2 : {
        prop1 : 0,
        prop2 : 0
    },
    dummy3 : {
        prop1 : 0,
        prop2 : 0
    }
};

最佳答案

这可以通过两个 for..in 循环实现

var obj = {
        prop1 : {dummy1 : 0, dummy2 : 0, dummy3 : 0},
        prop2 : {dummy1 : 0, dummy2 : 0, dummy3 : 0}
    };
// start of interesting code
var a, b,
    o2 = {};
for (a in obj)
    for (b in obj[a]) {
        if (!o2[b]) o2[b] = {}; // if o2 doesn't have this yet, make new obj
        o2[b][a] = obj[a][b];   // swap
    }
o2; /* {
    "dummy1": {"prop1": 0, "prop2": 0},
    "dummy2": {"prop1": 0, "prop2": 0},
    "dummy3": {"prop1": 0, "prop2": 0}
} */

您可能还想检查属性是否被继承等。

关于javascript - 还原对象及其属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17817773/

10-13 00:08