condition是上面搜索功能区传过来的条件对象,可以通过父子组件传值的方式传过来,也可以直接写在当前页面,这个随意,大致形式
{
条件1属性名:‘值’,
条件2属性名:‘值’,
条件3属性名:‘值’
}
fiter过滤函数,data是原始数组,fiterData是过滤后的数组,item是data遍历的每个小对象,Object.keys(conditon)是遍历搜索条件condition的每个键值,every()方法用于检测数组中的所有元素是否都满足指定条件(该条件为一个函数),最里面的return是every条件,这里就是会连续执行多次,遍历次数与condition的元素个数有关,每次返回新的结果。includes监测是否存在某个元素,这是搜索关键。trim() 函数移除字符串两侧的空白字符或其他预定义字符,toLowerCase(),字符串中的字母被转换为小写字母,这里是为了更好的查询。
search事件触发机制,下拉change事件,按钮点击事件,看需求。
搜索参考了网上的方法,如果不足请指正。
search(condition) {
console.log(condition);
let data = this.tableData;
let filter = (condition, data) => {
return data.filter((item) => {
return Object.keys(condition).every((key) => {
return String(item[key])
.toLowerCase()
.includes(String(condition[key]).trim().toLowerCase());
});
});
};
this.filterData=filter(condition, data);
},