weixin_41452476 2024-02-20 10:29 采纳率: 24%
浏览 36
已结题

树状图的数据类型的模糊搜索js

写一个函数,传入任意值,模糊查询numeData中name的属性值,如果有匹配到,找出对应的层级,返回一个新数组,不包含的数据全部删除掉,层级不删除,依旧保留
比如,传入y,就返回name中的值有包含y的所有层级和他的父层级,传入03,就返回name中有03的所有层级,和父层级

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var numeData = [{
            id: '1',
            name: "我w",
            children: [{
                id: '11',
                name: "两个我12",
                children: [{
                    id: '111',
                    name: "三个我",
                }, ]
            }, {
                id: '01',
                name: "01我3",
                children: [{
                    id: '001',
                    name: "001我",
                }, ]
            }]
        }, {
            id: '2',
            name: "你",
            children: [{
                id: '22',
                name: "两个你56",
                children: [{
                    id: '222',
                    name: "三个你",
                }, ]
            }, {
                id: '02',
                name: "02你",
                children: [{
                    id: '002',
                    name: "002你",
                    children: [{
                        id: '0002',
                        name: '0002你'
                    }]
                }, ]
            }]
        }, {
            id: '3',
            name: "他",
            children: [{
                id: '33',
                name: "两个他_3y",
                children: [{
                    id: '333',
                    name: "三个他",
                }, ]
            }, {
                id: '03',
                name: "03他",
                children: [{
                    id: '003',
                    name: "003他",
                    children: [{
                        id: '0003',
                        name: '0003他'
                    }]
                }, ]
            }]
        }]

       

    // 写一个函数,传入任意值,模糊查询numeData中name的属性值,如果有匹配到,找出对应的层级,返回一个新数组,不包含的数据全部删除掉,层级不删除,依旧保留
    // 比如,传入y,就返回name中的值有包含y的所有层级和他的父层级,传入03,就返回name中有03的所有层级,和父层级
    </script>
</body>

</html>




  • 写回答

27条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-02-20 10:31
    关注
    获得1.50元问题酬金

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,您可以参考如下,如果回答的不正确,及时评论区回复我,我会根据你错误描述追加回复。如果解决了您的问题,麻烦帮我点击个采纳!谢谢您的肯定!

    这是一个递归的问题,可以使用JavaScript的深度优先搜索(DFS)来解决。以下是一个可能的解决方案:

    function searchTree(data, keyword) {
      let result = [];
      
      function dfs(node) {
        if (node.name.includes(keyword)) {
          result.push(node);
        }
        
        if (node.children && node.children.length > 0) {
          for (let child of node.children) {
            dfs(child);
          }
        }
      }
    
      data.forEach(node => dfs(node));
    
      return result;
    }
    
    console.log(searchTree(numeData, 'y'));
    console.log(searchTree(numeData, '03'));
    

    这个searchTree函数接收两个参数:你的数据数组numeData和你要搜索的关键字。它定义了一个内部函数dfs来进行深度优先搜索。如果当前节点的name属性包含了关键字,那么这个节点就被添加到结果数组中。然后,如果这个节点有子节点,我们就对每个子节点进行同样的搜索。

    在主函数中,我们遍历整个numeData数组,并对每个节点调用dfs函数。最后返回的结果数组就是所有包含关键字的节点及其父节点。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 赞助了问题酬金50元 2月20日
  • 创建了问题 2月20日