js 模糊搜索和精确搜索

const doctors = [  
  { DRNAME: '张三', DEPARTMENT: '内科' },  
  { DRNAME: '李四', DEPARTMENT: '外科' },  
  { DRNAME: '王五', DEPARTMENT: '儿科' }  
];  
  

模糊搜索

searchOne(list,keyword,attribute){
      const reg = new RegExp(keyword)
      const arr = []
      for (let i = 0; i < list.length; i++) {
        if (reg.test(list[i][attribute])) {
          arr.push(list[i])
        }
      }
      return arr
    }
    
const searchResults = searchOne(doctors, '张', 'DRNAME');  
console.log(searchResults); // 输出: [{ DRNAME: '张三', DEPARTMENT: '内科' }]

这个函数 searchOne 的目的是在一个列表(list)中搜索包含特定关键字(keyword)的元素,并返回这些元素组成的数组。搜索是基于每个元素的某个属性(attribute)进行的

函数的工作原理如下:

  1. 首先,使用传入的 keyword 创建一个正则表达式对象 reg。这个正则表达式将用于后续的匹配操作。
  2. 定义一个空数组 arr,用于存储匹配到的元素。
  3. 遍历传入的列表 list,对于列表中的每一个元素(假设每个元素都是一个对象或数组,且可以通过索引或键名访问其属性或元素):
  • 使用reg.test(list[i][attribute])来检查当前元素的指定属性(attribute)是否包含关键字(keyword)。这里,list[i][attribute]表示访问列表中第 i 个元素的 attribute 属性或索引位置的值。
  • 如果 test 方法返回 true,表示找到了匹配项,那么就将这个元素添加到 arr 数组中。
  1. 遍历完成后,返回包含所有匹配元素的数组 arr。

精确搜索

let searchName = '张三'
const searchResults = doctors.filter(v=> {  
  return v.DRNAME === searchName;  
});  
  
console.log(searchResults);  
// 输出: [{ DRNAME: '张三', DEPARTMENT: '内科' }]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值