js--数组转对象和对象转数组

题目如下:将下列对象转成数组

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循环的新写法, 要注意里面变量的值

猜你喜欢

转载自www.cnblogs.com/zyc-zsxbh/p/9334241.html