【筛选方法汇总】js简单实现多条件过滤数组对象,返回新的数组,根据一个数组内的元素,过滤另一个数组对象【持续更新】

多条件过滤数组对象

使用方法: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
})

猜你喜欢

转载自blog.csdn.net/seeeeeeeeeee/article/details/134077155