为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-03-01 18:15:01
原数组格式如下现在想将每一级的children2里面的对象合并到children1里面,如果没有children1则新建children1。希望合并后的格式如下现在我通过这个方法可以返回正确的层次,但返回结果的格式是这样的[Array(2), Array(1)],只有最里面的一级是对象,其他都是嵌套数组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 打开控制台看输出请问一下该如何修改代码或有什么其他方法可以实现想要的效果?
查看完整描述

3 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-03-12
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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

    });

}


查看完整回答
反对 回复 2019-03-12
?
智慧大石

TA贡献1946条经验 获得超3个赞

题主的 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)));


查看完整回答
反对 回复 2019-03-12
  • 3 回答
  • 0 关注
  • 1232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信