求助一个递归问题

代码代码如下,我需要将data里面的数据递归一遍然后保留层级关系放到newTempData里面,现在不知道如何在每次递归时给newTempData加层级,也就是children

var data = [
    {
        name: "11111",
        children: [
            {
                name: "22222"
            },
            {
                name: "22222"
            },
            {
                name: "22222",
                children: [
                    {
                        name: "33333"
                    }
                ]
            }
        ]
    },
    {
        name: "1111",
        children: [
            {
                name: "22222",
                defaultUrl: "www.baidu.com",
                text: "text"
            }
        ]
    }
];


var newTempData = [];
function filterData(arr){
    for(var i = 0, len = arr.length; i < len; i++){
        //  如果有children属性,则对children元素进行递归
        if(arr[i].children){
            filterData(arr[i].children);
        }

        newTempData.push(arr[i]);
    }
}

filterData(data);
阅读 2.5k
2 个回答

应该没错吧?

function filterData(arr){
    var result = [];

    for(var i = 0, len = arr.length; i < len; i++){
        var  obj = {
            "defaultUrl": arr[i].defaultUrl,
            'name': arr[i].name
        }
        //  如果有children属性,则对children元素进行递归
        if(arr[i].children){
            obj.children = filterData(arr[i].children);
        }

        result.push(obj)
    }

    return result;
}
function tmp(obj){
    var copyObj = [];
    for(var i =0;i<obj.length;i++){
        var tmpObj = {};
        for(var j in obj[i]){
            if(j=="children"){
                tmpObj[j] = tmp(obj[i][j]);
            }else{
                tmpObj[j] = obj[i][j];
            }
        }
        copyObj.push(tmpObj)
    }
    return copyObj;
}

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题