如何将嵌套对象转换为对象数组?

时间:2015-04-14 22:24:32

标签: javascript arrays

inputJson = {
    "mn": {
        "mt1": 1,
        "mtop": 2,
        "ot1": 3
    },
    "ln": {
        "mt1": 4,
        "mtop": 5,
        "ot1": 6
    }
}

OutputArrayOfJson=[
     { rs: "mt1", mn: 1, ln: 4 },
     { rs: "mtop", mn: 2, ln: 5 },
     { rs: "ot1", mn: 3, ln: 6 }
]
  • rs是硬编码密钥。

我不知道为什么我很难做这个操作。

2 个答案:

答案 0 :(得分:1)

这是javascript对象的转换

inputJson = {
  "mn": {
    "mt1": 1,
    "mtop": 2,
    "ot1": 3
  },
  "ln": {
    "mt1": 4,
    "mtop": 5,
    "ot1": 6
  }
}

d = {};
for(var key1 in inputJson){ 
  for(var key2 in inputJson[key1]) { 
    if(!(key2 in d)){ 
      d[key2]={};
    } 
    d[key2][key1] = inputJson[key1][key2];
  }
}

v = []; 
for(var k in d){ 
  var o = {}; 
  o.rs=k; 
  for(var k2 in d[k]){ 
    o[k2] = d[k][k2]; 
  } 
  v.push(o);
}

//result is in v

注意:下次你应该显示示例代码是否有帮助

答案 1 :(得分:0)

您可以遍历对象并将每个root属性推送到数组中:

var arr = [];

for (var p in inputJson){
  arr.push(inputJson[p]);
}

console.log(arr);