最近在项目中遇到了一个关于前端做分页处理数据,做多条件查询。后来经过同事的帮助,查阅资料,整理出一个较为可行的方案。下面贴上代码。
filterData(condition,data){
//condition 传入的是查询条件,是一个对象
//data 是本次需要筛选的数据源。
let filter = (condition, data) => {
return data.filter( item => {
return Object.keys( condition ).every( key => {
if(condition[ key ] == '') return true
//这里是为了进行某个条件的模糊查询做出的业务判断。key是对应的值。
let diff = key == 'gdsNm'
? String( item[ key ] ).toLowerCase().indexOf( String( condition[ key ] ).trim().toLowerCase() ) !== -1
: String( item[ key ] ).toLowerCase() == String( condition[ key ] ).trim().toLowerCase()
return diff
})
})
}
return filter(condition,data)
}
如果使用的是vue项目,可以直接拉代码使用。写的不好的地方,欢迎大家指出。共同进步。