ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

递归模糊查询所有字段树形数据

2022-08-08 19:32:11  阅读:317  来源: 互联网

标签:family 匹配 name 递归 修饰符 查询 查找 state 树形


效果:

代码

<!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>
  var arr = [
  {
    "name": "语法",
    "state": "",
    "family": [
        {
          "name": "var patt=new RegExp(pattern,modifiers);或者var patt=/pattern/modifiers;",
          "state": "pattern(模式)描述了表达式的模式;modifiers(修饰符) 用于指定全局匹配、区分大小写的匹配和多行匹配 "
        }
    ]
  },
  {
    "name": "RegExp 对象方法",
    "state": "",
    "family": [
        {
          "name": "compile",
          "state": "在 1.5 版本中已废弃。 编译正则表达式。"
        },
        {
          "name": "exec",
          "state": "索字符串中指定的值。返回找到的值,并确定其位置。"
        },
        {
          "name": "test",
          "state": "执检索字符串中指定的值。返回 true 或 false。"
        },
        {
          "name": "toString",
          "state": "返回正则表达式的字符串。"
        }
    ]
  },
  {
    "name": "支持正则表达式的 String 对象的方法",
    "state": "",
    "family": [
        {
          "name": "search",
          "state": "检索与正则表达式相匹配的值。"
        },
        {
          "name": "match",
          "state": "找到一个或多个正则表达式的匹配。"
        },
        {
          "name": "replace",
          "state": "替换与正则表达式匹配的子串。"
        },
        {
          "name": "split",
          "state": "把字符串分割为字符串数组。"
        }
    ]
  },
  {
    "name": "RegExp 对象属性",
    "state": "",
    "family": [
        {
          "name": "constructor",
          "state": "返回一个函数,该函数是一个创建 RegExp 对象的原型。"
        },
        {
          "name": "global",
          "state": "判断是否设置了 'g' 修饰符"
        },
        {
          "name": "ignoreCase",
          "state": "判断是否设置了 'i' 修饰符。"
        },
        {
          "name": "lastIndex",
          "state": "用于规定下次匹配的起始位置"
        },
        {
          "name": "multiline",
          "state": "判断是否设置了 'm' 修饰符"
        },
        {
          "name": "source",
          "state": "返回正则表达式的匹配模式"
        }
    ]
  },
  {
    "name": "修饰符查查",
    "state": "修饰符用于执行区分大小写和全局匹配",
    "family": [
        {
          "name": "i",
          "state": "执行对大小写不敏感的匹配。"
        },
        {
          "name": "g",
          "state": "执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。"
        },
        {
          "name": "m",
          "state": "执行多行匹配。"
        }
    ]
  },
  {
    "name": "方括号",
    "state": "方括号用于查找某个范围内的字符",
    "family": [
        {
          "name": "[abc]",
          "state": "查找方括号之间的任何字符。"
        },
        {
          "name": "[^abc]",
          "state": "查找任何不在方括号之间的字符。"
        },
        {
          "name": "[0-9]",
          "state": "aaad"
        },
        {
          "name": "[a-z]",
          "state": "查找任何从小写 a 到小写 z 的字符。"
        },
        {
          "name": "[A-Z]",
          "state": "查找任何从大写 A 到大写 Z 的字符。"
        },
        {
          "name": "[A-z]",
          "state": "查找任何从大写 A 到小写 z 的字符。"
        },
        {
          "name": "[adgk]",
          "state": "查找给定集合内的任何字符。"
        },
        {
          "name": "[^adgk]",
          "state": "查找给定集合外的任何字符。"
        },
        {
          "name": "(red|blue|green)",
          "state": "查找任何指定的选项。"
        }
    ]
  }
  ]

// 递归模糊查询
/** 
   * @description: 模糊查询所有字段
   * @param {[object]} list 需要处理的对象数组
   * @param {string} zd 查询参数
   */
function cx(value,list){
  let newarr = [];
    // 1.检测数组是否存在是否为空
    if( list && list.length){
      // 直接遍历
        list.filter(v =>{
          // 判断是否存在子集
           let ab = cx(value,v.family);
            // 浅拷贝遍历数据
            const obj = {
              ...v,
            };
            // 每次循环都进行判断
            if (ab && ab.length) {
               newarr.push(obj);
            }
            // 全部拆封为一维数组
          let a = Object.values(Object.fromEntries(Object.entries(v).filter(item => true)))
          // 循环判断数组与判断查询值是否匹配
          a.some((items) => {
            // 存在添加到新的数据组
            if (items.includes(value)) {
                newarr.push(v);
            }
          });
      })

    }
    return newarr;
}

console.log(cx('修饰符查查',arr))

</script>
</body>
</html>

 

标签:family,匹配,name,递归,修饰符,查询,查找,state,树形
来源: https://www.cnblogs.com/zxh-bug/p/16563146.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有