猿问

请问一下嵌套数组里面的两个children 合并为一个

原数组格式如下

现在想将每一级的children2里面的对象合并到children1里面,如果没有children1则新建children1。
希望合并后的格式如下

https://img1.mukewang.com/5c8714c300015d8804740887.jpg

现在我通过这个方法可以返回正确的层次,但返回结果的格式是这样的[Array(2), Array(1)],只有最里面的一级是对象,其他都是嵌套数组

https://img4.mukewang.com/5c8714d20001ee8b04260394.jpg


function transilate(data) {

   return data.map((item) => {

        if (item.children2) {

            if(item.children2.length>0){

                let concatR=item.children1?item.children1.concat(item.children2):item.children2

                item.children1=concatR

            }

            return transilate(item.children1)

        }

        return item

    });

}

transilate(data)

JS Bin 代码地址JS Bin 打开控制台看输出


请问一下该如何修改代码或有什么其他方法可以实现想要的效果?


翻阅古今
浏览 1233回答 3
3回答

拉丁的传说

return transilate(item.children1) -> transilate(item.children1)

蓝山帝景

function transilate(data) {   return data.map((item) => {        if (item.children2) {            if(item.children2.length>0){                let concatR=item.children1?item.children1.concat(item.children2):item.children2                item.children1=concatR            }            delete item.children2            item.children1 = transilate(item.children1)        }        return item    });}

智慧大石

题主的 result 给的有错啊,,,let test = JSON.parse(JSON.stringify(data));function childrenIterator(arr) {    arr.map(function(obj) {        if (obj.children2 && obj.children2.length !== 0) {            obj.children2.forEach(function(o) {                obj.children1 ? obj.children1.push(o) : obj.children1 = [o];            });        }        delete obj.children2;        if (obj.children1) {            childrenIterator(obj.children1);        }        return obj;    });    return arr;}console.log(JSON.stringify(childrenIterator(test)));
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答