2015-03-19 145 views
0

我有一个看起来像下面这样的对象数据:如何对象转换为对象的数组的JavaScript

data = { 
      anna:{ 
       phase1:23, 
       phase2:24, 
       phase3:0, 
       phase4:5, 
       phase5:0 
       }, 
      Robin:{ 
       phase1:16, 
       phase2:12, 
       phase3:21, 
       phase4:23, 
       phase5:2    
       } 
     } 

现在我想将它们转换到data变量是对象和annarobin是对象的数组:

data = { 
      anna:[ 
       { phase1: 23 }, 
       { phase2: 24 }, 
       { phase3: 0 }, 
       { phase4: 5 }, 
       { phase5: 0 } 
       ], 
      Robin:[ 
       { phase1: 16 }, 
       { phase2: 12 }, 
       { phase3: 21 }, 
       { phase4: 23 }, 
       { phase5: 2 }    
       ] 
     } 
+0

怎么样'for'? – zerkms 2015-03-19 02:57:33

回答

0

试试这个

function convertToArray(obj) { 
var retVal = []; 
for (key in obj) { //iterates through the list of key-val pairs 
    if (obj.hasOwnProperty(key)) { 
    retVal.push({ key: obj[key]}); 
    } //pushes it to newly created array 
} 
return retVal; 
} 
1

像下方的功能可以帮助您:

编辑:编辑答案容纳通道cafebabe1991建议的时代。

function convertToArray(obj) { 
var retVal = []; 

for (var key in obj) { { //iterates through the list of key-val pairs 
    if (obj.hasOwnProperty(key)) { 
    retVal.push({ key: obj[key]}); //pushes it to newly created array 
    } 
} 
+1

这不是通过对象循环的理想方式...使用object.hasOwnProperty(key),因此它不会遍历其他属性。 欲了解更多详情,请阅读此处.... http://stackoverflow.com/questions/684672/loop-through-javascript-object – cafebabe1991 2015-03-19 03:07:27

+0

谢谢@ cafebabe1991 – 2015-03-19 03:10:32