JS递归过滤树形结构数组对象--模糊查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
 
<body>
    <script>
        const { log } = console
        let arr = [
            {
                title: '你吗?',
                children: [
                    {
                        title: '很好啊',
                        children: []
                    },
                    {
                        title: '吗',
                        children: [
                            {
                                title: '好呀',
                                children: []
                            }
                        ]
                    }
                ]
            },
            {
                title: '卡卡卡',
                children: [
                    {
                        title: '非常好芬',
                        children: []
                    }
                ]
            },
            {
                title: '好卡',
                children: [
                    {
                        title: '非常芬',
                        children: []
                    }
                ]
            },
            {
                title: '第三方的好',
                children: []
            },
            {
                title: '第三方的',
                children: [
                    {
                        title: '的',
                        children: []
                    }
                ]
            }
        ]
 
        let onRecursionData = (arr, val) => {
            let newarr = []
            arr.forEach(item => {
                if (item.children && item.children.length) {
                    let children = onRecursionData(item.children, val)
                    let obj = {
                        ...item,
                        children
                    }
                    if (children && children.length) {
                        newarr.push(obj)
                    } else if(item.title.includes(val)){
                        newarr.push({ ...item })
                    }
                } else {
                    if (item.title.includes(val)) {
                        newarr.push(item)
                    }
                }
            })
            return newarr
        }
 
        let result = onRecursionData(arr, '好')
        log(result)
    </script>
</body>
 
</html>

  参考文章:https://blog.csdn.net/qq_43432158/article/details/122846110

posted @   前端小沫  阅读(712)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示