多条件过滤数组对象
使用方法: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) |
| |
| |
| 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 |
| }) |
复制