javascript - 关于json数组递归的问题
PHP中文网
PHP中文网 2017-05-16 12:59:57
0
4
345

var arr=[{

    name:"总队",
    id:"1",
    alias:"zongdui",
    children:[{
        name:"第一支队",
        id:"2",
        parent_id:"1",
        children:[
            {
                name:"第一大队",
                id:"4",
                parent_id:"2"    
            }
        ]},
        {
        name:"第二支队",
        id:"3",
        parent_id:"1",
        children:[
            {
                name:"第二大队",
                id:"5",
                parent_id:"2"
            }
        ]
    }]  

}]

这个json 怎么递归出 name 和 id ?求代码

PHP中文网
PHP中文网

认证0级讲师

reply all(4)
小葫芦

Using recursion to implement

var arr = [{
    name:"总队",
    id:"1",
    alias:"zongdui",
    children:[{
        name:"第一支队",
        id:"2",
        parent_id:"1",
        children:[
            {
                name:"第一大队",
                id:"4",
                parent_id:"2"    
            }
        ]},
        {
        name:"第二支队",
        id:"3",
        parent_id:"1",
        children:[
            {
                name:"第二大队",
                id:"5",
                parent_id:"2"
            }
        ]
    }]  
}]; 

function headFor(o, cb){
    if (!o) return; 

    o.forEach(child => {
        cb(child); 
        if (child.children) {
            headFor(child.children, cb);    
        }
    });
}

var res = []; 
headFor(arr, function(o){
    var temp = {
        name: o.name, 
        id: o.id,
        parent_id: o.id 
    }; 
    res.push(temp); 
}); 

res.forEach(e => console.log(e)); 
console.log(JSON.stringify(res)); 

Link

I answered an almost identical question. . .
/q/10...

过去多啦不再A梦
var ret = [];
while (arr != []) {
    ret.push({
        'name': arr[0]['name'],
        'id': arr[0]['id'],
    )
    arr = arr['children'];
}
console.log(ret);
过去多啦不再A梦
arr2 = []
function arr_mat(arr){
    for(var i=0;i<arr.length;i++){
        if(arr[i].children.length > 0){
        //     // arr2.push({
        //     //     'name':arr[i].children.name
        //     // });
            console.log(arr[i].children);

            arr_mat(arr[i].children);
        }
    }
}
arr_mat(arr);

Why can’t I do this

巴扎黑

You can use the json_decode function to convert the json string into an array operation

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!