消息关闭
    暂无新消息!

关于json数组递归的问题

问题作者 : 泰安dkb2017-05-06发布

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 ?求代码


4个回答

︿ 0
var ret = [];
while (arr != []) {
    ret.push({
        'name': arr[0]['name'],
        'id': arr[0]['id'],
    )
    arr = arr['children'];
}
console.log(ret);
︿ 0

利用递归实现

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

我答过一个几乎一模一样的。。。
https://segmentfault.com/q/10...

︿ 0
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);

为什么我这样不行呢