fuzzy_search/index.js

import cavar_type from '../cavar_type'

/**
* 功能:模糊搜索
* @param {array} list - 目标对象
* @param {string|number} [keyword] - 目标key值
* @param {function} [task] - 如果需要解析的数组中成员是一组对象的话需要该条件解析 需要return该解析的条件<br/>可以接收两个参数<br/>1. arr接收一个数组<br/>2.i 经过循环的索引
* @returns {array} - 满足条件的新数组, 如果不满足条件也会返回一个空数组
*/

function fuzzy_search(
    list,
    keyword,
    task = (arr, i) => {
      return arr[i];
    }
  ) {
    if (cavar_type(list) === "array") {
      var reg = new RegExp(keyword);
      var arr = [];
      for (var i = 0; i < list.length; i++) {
        if (reg.test(task(list, i))) {
          arr.push(list[i]);
        }
      }
      return arr;
    } else {
      console.error(
        new Error("fuzzy_search: " + "list" + " is not Array, you is sb")
      );
      return []
    }
  }
  export default fuzzy_search;