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

这个题如何递归?

这个题如何递归?

叮当猫咪 2018-10-17 14:15:29
var data = [    {        checked: false,        children: [            {                checked: true            },            {                checked: false,                children: [                    {                        checked: true                    },                    {                        checked: true                    }                ]            }        ]    }];children可以是无限多,如果一个children里的每项都是checked:true,就把它的父级的checked也置为true。
查看完整描述

1 回答

?
守着一只汪

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

写出来一个方法,就这组数据来看是对的。

let data = [

    {

        checked: false,

        children: [

            {

                checked: true

            },

            {

                checked: false,

                children: [

                    {

                        checked: true

                    },

                    {

                        checked: true

                    }

                ]

            }

        ]

    }

];

// init checked status

function getNodes(data) {

    if (data.children) {

        let checkedLength = 0;

        data.children.forEach(node => {

            if (node.children) {

                node = getNodes(node);

            }

            if (node.checked) checkedLength++;

        });

        if (checkedLength >= data.children.length) data.checked = true;

        return data;

    } else {

        return data;

    }

}

data = data.map(node => node = getNodes(node));

console.log(JSON.stringify(data));


查看完整回答
反对 回复 2018-11-30
  • 1 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

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