求助一个递归问题

代码代码如下,我需要将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);


蓝山帝景
浏览 492回答 1
1回答

慕森王

应该没错吧?function filterData(arr){&nbsp; &nbsp; var result = [];&nbsp; &nbsp; for(var i = 0, len = arr.length; i < len; i++){&nbsp; &nbsp; &nbsp; &nbsp; var&nbsp; obj = {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "defaultUrl": arr[i].defaultUrl,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'name': arr[i].name&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; 如果有children属性,则对children元素进行递归&nbsp; &nbsp; &nbsp; &nbsp; if(arr[i].children){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.children = filterData(arr[i].children);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; result.push(obj)&nbsp; &nbsp; }&nbsp; &nbsp; return result;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript