题目如下:将下列对象转成数组
var scoreObject = { "Tony": { "Math": 95, "English": 79, "Music": 68 }, "Simon": { "Math": 100, "English": 95, "Music": 98 }, "Annie": { "Math": 54, "English": 65, "Music": 88 } }
转成格式:
var scoreArray = [ ["Tony", 95, 79, 68], …… ];
代码如下:
var arr6=[]; for(var i in scoreObject){ //第一次使用这种for循环,这里i并不是i=1,i=2,i=3....这种数字,而是i=Tony,i=Simon,i=Annie var arr7=[]; arr7.push(i); for(var j in scoreObject[i]){ //同理这里的for循环里的 j 也不是 1,2,3.。。 arr7.push(scoreObject[i][j]); } arr6.push(arr7); } console.log(arr6);
*************************************************************************************************************
数组转对象:
1 var menuArr = [ 2 [1, "Area1", -1], 3 [2, "Area2", -1], 4 [3, "Area1-1", 1], 5 [4, "Area1-2", 1], 6 [5, "Area2-1", 2], 7 [6, "Area2-2", 2], 8 [7, "Area1-2-3", 4], 9 [8, "Area2-2-1", 6], 10 ];
转化格式:
1 var menuObject = { 2 "1": { 3 name: "Area1", 4 subMenu: { 5 "3": { 6 name: "Area1-1" 7 }, 8 "4": { 9 name: "Area1-2", 10 subMenu: { 11 "7": { 12 name: "Area1-2-3" 13 } 14 } 15 } 16 } 17 } 18 19 …… 20 21 }
代码(借鉴网上的):
function arryToObject(arry){ var menuObject ={}//创建一个空对象 for(var i=0,len=arry.length;i<len;i++){ var arr1= []; // console.log(arry[i]); arr1=arry[i]; // console.log(arry1); if(arr1[2]== -1){ menuObject[arr1[0]]={ "name":arr1[1], "subMenu":{ } } } if(arr1[2]== 1){ console.log(arr1[2]); menuObject["1"]["subMenu"][arr1[0]]={ "name":arr1[2], "subMenu":{} } } if(arr1[2]== 2){ menuObject["2"]["subMenu"][arr1[0]]={ "name":arr1[2], "subMenu":{} } } if(arr1[2]== "4"){ menuObject["1"]["subMenu"]["4"]["subMenu"][arr1[0]]={ "name":arr1[2], "subMenu":{} } } if(arr1[2]==6){ menuObject["2"]["subMenu"]["6"]["subMenu"][arr1[0]]={ "name":arr1[2], "subMenu":{} } } } return menuObject; } console.log(arryToObject(menuArr));
*******************************************************************************
总结:for循环的新写法, 要注意里面变量的值