根据查询对象,对已有的对象数组进行查询,代码如下
function filterFunc(val: any, target: string, filterArr: []) {
if (val == undefined || val == "") {
return filterArr;
}
return filterArr.filter((p) => {
if (Array.isArray(val?.split(',')) && val?.split(',').length > 1) {
// 处理时间区间
let arr = val?.split(',')
return p[target] >= arr[0] && p[target] <= arr[1];
} else {
// 其他类型的值,忽略大小写进行模糊匹配
return p[target].toLowerCase().indexOf(val.toLowerCase()) > -1;
}
});
}
function handleSearch(valueList: {}, dataSourceDtl: any[]) {
// 备份了一下数据
let arr = dataSourceDtl;
// 通过遍历key值来循环处理
Object.keys(valueList).forEach((e) => {
// 调用自己定义好的筛选方法
arr = filterFunc(valueList[e], e, arr);
});
// 为表格赋值
return arr;
}
使用方法如下
//准备好查询对象
let searchObj = {
"name": 'ninomiya',
"createTime": '2023-05-12 00:00:00,2023-06-06 23:59:59'
}
//准备好需要查询的对象数组
let arr = [
{
"name": "ninomi",
"createTime": "2023-05-15 13:35:06",
}
]
//调用写好的方法
handleSearch(searchObj, arr)
最后得到的结果就是查询到的数据了