鍍金池/ 問答/HTML/ 循環(huán)遍歷數(shù)組取出想要的數(shù)據(jù)封裝成對象數(shù)組

循環(huán)遍歷數(shù)組取出想要的數(shù)據(jù)封裝成對象數(shù)組

請問如下數(shù)組,怎么循環(huán)遍歷出 想要的數(shù)據(jù)。把下面數(shù)組中的 name 和 id 取出來放在一個對象數(shù)組中;arrNew = [{id:1, name:"系統(tǒng)設(shè)置"}, {id:39, name:"菜單管理"}, {id:36, name:"菜單詳情"},......]

let arr = [
    {
        "appId":1001,
        "id":1,
        "name":"系統(tǒng)設(shè)置",
        "nodes":[
            {
                "appId":1001,
                "id":38,
                "name":"菜單管理",
                "nodes":[
                    {
                        "appId":1001,
                        "id":36,
                        "name":"菜單詳情",
                    }
                ]
            },
            {
                "appId":1001,
                "id":2,
                "name":"角色管理",
                "nodes":[

                ]
            },
        ]
    },
    {
        "appId":1001,
        "id":439,
        "name": "數(shù)據(jù)管理"
        "nodes":[
            {
                "id":440,
                "name":"數(shù)據(jù)編輯",
                "nodes":[

                ]
            }
        ]
    }
];

主要是希望得到效率高一些的方法。

回答
編輯回答
瞄小懶

var newarr=[];

        for(var i=0;i<arr.length;i++){
            var temp={"id":arr[i]["id"],"name":arr[i]["name"]};
            newarr.push(temp);
        }
        console.log(newarr)

希望能解決你的問題;

2017年9月22日 06:54
編輯回答
清夢

幫你寫了一下,你有一個節(jié)點沒有 name , 我給解構(gòu)出來的 name 默認(rèn)為空字符串:


let arr = [
    {
        "appId":1001,
        "id":1,
        "name":"系統(tǒng)設(shè)置",
        "nodes":[
            {
                "appId":1001,
                "id":38,
                "name":"菜單管理",
                "nodes":[
                    {
                        "appId":1001,
                        "id":36,
                        "name":"菜單詳情",
                    }
                ]
            },
            {
                "appId":1001,
                "id":2,
                "name":"角色管理",
                "nodes":[

                ]
            },
        ]
    },
    {
        "appId":1001,
        "id":439,
        "nodes":[
            {
                "id":440,
                "name":"數(shù)據(jù)編輯",
                "nodes":[

                ]
            }
        ]
    }
];

const result = [];
arr.forEach( ({id, name = '', nodes}) => {
    result.push({
        id,
        name
    })
    nodes.forEach( ({id, name = ''}) => {
        result.push({
            id,
            name
        })
    })
})

console.log(result);
2017年6月8日 18:54
編輯回答
柚稚

用遞歸吧。

let arr2=[];
function run(arr){
        if(arr.length>0){
        arr.forEach(v=>{
            let md={};
            md.id=v.id;
            md.name=v.name;
            arr2.push(md)
            if(v.nodes){
                run(v.nodes)
            }                
        })
    }
    return arr2;
}
2017年1月23日 19:50