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

树状图的数据类型的模糊搜索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日

悬赏问题

  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值
  • ¥15 VFP如何使用阿里TTS实现文字转语音?