这个题如何递归?

var data = [

    {

        checked: false,

        children: [

            {

                checked: true

            },

            {

                checked: false,

                children: [

                    {

                        checked: true

                    },

                    {

                        checked: true

                    }

                ]

            }

        ]

    }

];

children可以是无限多,如果一个children里的每项都是checked:true,就把它的父级的checked也置为true。

叮当猫咪
浏览 508回答 1
1回答

守着一只汪

写出来一个方法,就这组数据来看是对的。let data = [    {        checked: false,        children: [            {                checked: true            },            {                checked: false,                children: [                    {                        checked: true                    },                    {                        checked: true                    }                ]            }        ]    }];// init checked statusfunction 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));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript