1.
/**
* 单条件 模糊查找
* @param {Array} items 需要查询的值
* @param {String} key 需要查询的数据的键值
* @param {String} searchValue 查找的值
* fuzzySearch(items, 'name', 'aa');
*/
function fuzzySearch(items, key, searchValue) {
const regex = new RegExp(searchValue, "i") // 'i' 表示不区分大小写
return items.filter((item) => regex.test(item[key]))
}
2.
/**
* 单条件多值精准查找
* @param {Object} lists 所有数据
* @param {string} key 需要查询的数据的键值
* @param {Array} valueArr 需要查询的值
* 函数执行 在 “arr” 对象中查找 “job” 值为 “programmer” 和 “student” 的数据
*searchKeyValues(arr,"job",['programmer','student'])
*/
function searchKeyValues(lists, key, valueArr) {
let res = lists.filter((item) => valueArr.find((i) => i === item[key]))
return res
}
3.
/**
* 多条件多值精准查找
* @param {Object} lists 所有数据
* @param {Object} filters 需要查询的数据
* 示例:
* 函数执行 在 “staff” 对象中查找 “age” 值为 “8”或“18” 和 “hobby” 值为 “play”或“sleep” 的数据
// 注:该方法第二个参数是个对象,键对应的值是个多值的数组
let filters = {
age:[8,18],
hobby:["play","sleep"]
}
this.searchKeysValues(staff,filters)
*/
function searchKeysValues(lists, filters) {
let resArr = []
lists.filter((item) => {
for (let i in filters) {
for (let j of filters[i]) {
if (item[i] == j) {
resArr.push(item)
}
}
}
})
return resArr;
}