获取输入框的值放入对象中,之后将值为0或为定义的对象过滤
function getSearch() {
$(".setting_box input").prop("checked", true);
hideItem();
page = 0;
// 重新赋予全部数据
data = globalData;
// 获取搜索条件
const filters = {
name_search: $(".search").val(),
title_search: $("#search").val(),
id_company: $(".companyInput").val(),
tradeid_industry: $(".callingInput").val(),
company_office: $("#searchCompany").val(),
cattitle_sort: $("#callingInput").val(),
transname_search: $(".nameSearch").val(),
transcatname_search: $("#nameSelect").val()
};
// 过滤空值字段
Object.keys(filters).forEach(function(key) {
if (!filters[key] || filters[key] == 0) delete filters[key];
});
// 使用 performFilter 来筛选数据
const newArr = performFilter(data, filters);
// 处理筛选结果
if (newArr.length === 0) {
$("#pageContent").html('<img src="img/none.png" alt="" class="none_pic">');
$("#footer").hide();
} else {
data = newArr;
$("#footer").show();
$(".Notice").show();
render(data);
}
}
过滤之后通过函数 performFilter 来筛选数据
筛选之后使用 filter 方法遍历 items 数组,返回一个符合所有过滤条件的数组
function performFilter(items, filters) {
// 使用 filter 方法遍历 items 数组,返回一个符合所有过滤条件的数组
return items.filter(function(item) {
// 使用 every 方法遍历 filters 对象中的每一项(键值对)
return Object.entries(filters).every(function(entry) {
// 解构赋值:获取 filter 条件的字段名和对应的过滤值
var key = entry[0];
var filterValue = entry[1];
// 通过 key.split('_')[0] 拆解字段名,获取基本的字段名称(例如 name, title, company 等)
var fieldName = key.split('_')[0];
// 如果 filterValue 为空,跳过筛选(不执行任何过滤)
if (!filterValue) return true;
// 如果 item 中不存在该字段,跳过这个筛选条件
if (item[fieldName] === undefined) {
return true; // 如果字段不存在,认为条件已满足,跳过该条件
}
// 如果该字段是字符串类型,使用 includes 进行模糊匹配
if (typeof item[fieldName] === 'string') {
// 使用 toLowerCase() 确保不区分大小写,判断字段是否包含 filterValue
return item[fieldName].toLowerCase().includes(filterValue.toLowerCase());
}
// 对于其他类型(比如数字、布尔值等)的字段,进行直接比较
return item[fieldName] == filterValue;
});
});
}
Object.entries(filters)会把filters对象转为键值对的数组
键名
var key = entry[0];
键值
var filterValue = entry[1];
之后通过 key.split('_')[0] 拆解字段名,获取基本的字段名称,之后进行值的判断如果该字段是字符串类型,使用 includes 进行模糊匹配
匹配之后判断数组长度是否为零,为零就渲染暂无数据,有就将数组数据赋值给data,使其渲染
1380

被折叠的 条评论
为什么被折叠?



