递归的应用,返回对象以及子对象满足条件的对象【对象与子对象有共性】

后端 · 2021-06-22 ·

本例实现筛选出 testArr 数组元素中 c 的值大于3,且数组元素中的子元素children中的 c 的值也大于3,返回符合条件的新数组。

    var testArr = [
        {
            a: 1,
            b: 2,
            c: 3,
            children:[
                {
                    a: 1,
                    b: 2,
                    c: 1,
                }
            ]
        },
        {
            a: 1,
            b: 2,
            c: 4,
            children:[
                {
                    a: 1,
                    b: 2,
                    c: 2,
                },
                {
                    a: 1,
                    b: 2,
                    c: 3,
                },
                {
                    a: 1,
                    b: 2,
                    c: 4,
                }
            ]
        },
        {
            a: 1,
            b: 2,
            c: 5,
            children:[
                {
                    a: 1,
                    b: 2,
                    c: 1,
                },
                {
                    a: 1,
                    b: 2,
                    c: 2,
                },
                {
                    a: 1,
                    b: 2,
                    c: 3,
                }
            ]
        }

    ];
    function toFilter(arr){
        return arr.filter(item=>{
            if(item.c>3){
                if(item.children&&item.children.length){
                    item.children = toFilter(item.children)
                }
                return true
            }
            return false
        })
    }
    console.log(toFilter(testArr));
%