多条件过滤数组对象
使用方法:filterConditions 是筛选条件,key要和筛选的数组中的key一致,
如果筛选条件没有传或者传的空,会返回原数据不筛选,如果有值了会筛选。
第二个参数传的是需要过滤的数组对象
这里注意,返回原数组的判断条件可以自行设定,
比如我加了一个queryObj[key] == ‘0’
是因为我下拉框选项中有一个全部的选项,拿到的值是0.
需要返回所有数据,所以我加了一条,
如果有其他特殊需求的选项或者值需要返回原数组的就自行增删
主要对比的地方在这里 p[key] == queryObj[key]
我这里是直接对比是否一致的,如果你需要模糊查询,
比如包含这个值的都筛选出来,可以修改这边
let filterConditions = {
channel: this.qd,
month: this.time
}
let datas= this.filterData(filterConditions, this.tableDataAll)
// 多条件过滤,参数queryObj(过滤条件对象),list(需要过滤的数组)
filterData(queryObj, list) {
let arr = list
Object.keys(queryObj).forEach(key => {
if (queryObj[key] == undefined || queryObj[key] == '' || queryObj[key] == '0')return arr
arr = arr.filter(p => p[key] === null || p[key] == queryObj[key])})
return arr
},
根据一个数组内的元素,过滤另一个数组对象。数组对象中的某一个字段在数组中存在就过滤出来
kf是数组,里面是多个名字,过滤数组对象中名字一样的数据返回
let result = this.tableData.filter((item)=>{
if(this.kf.length==0){
return this.tableData
}else{
return this.kf.some(curVal => (curVal === item.name))
}
})
数组对象单独过滤符合要求的数据返回
let result = this.tableData.filter((item)=>{
return item.part_id==50
})