JS多条件过滤数组 js多条件筛选对象数组 js多条件查询数组 vue多条件过滤查询数组 js多条件筛选查询数组

JS多条件过滤数组 js多条件筛选对象数组 js多条件查询数组 vue多条件过滤查询数组 js多条件筛选查询数组

JS多条件过滤数组 js多条件筛选对象数组 js多条件查询数组 vue多条件过滤查询数组 js多条件筛选查询数组
需求是 多个条件在已有的数组筛选过滤数据,如果要做成动态过滤的话,需要将源数组数据拷贝一份,可能会耗性能

要过滤的数组对象

let testArray = [
        {
    
    
            "boxNumber": 11111,
            "id": 1,
            "parentQualifiedSn": "11310000051",
            "childQualifiedSn": "11310000053",
            "parentAddTime": "2022-09-21 11:31:46",
            "childAddTime": "2022-09-21 11:32:07"
        },
        {
    
    
            "boxNumber": adsad,
            "id": 1,
            "parentQualifiedSn": "11310000051",
            "childQualifiedSn": "11310000052",
            "parentAddTime": "2022-09-21 11:31:46",
            "childAddTime": "2022-09-21 11:32:03"
        },
        {
    
    
            "boxNumber": 123123123,
            "id": 2,
            "parentQualifiedSn": "11310000052",
            "childQualifiedSn": null,
            "parentAddTime": "2022-09-21 11:31:48",
            "childAddTime": null
        },
        {
    
    
            "boxNumber": 123,
            "id": 3,
            "parentQualifiedSn": "11310000053",
            "childQualifiedSn": null,
            "parentAddTime": "2022-09-21 11:31:50",
            "childAddTime": qe123
        },
        {
    
    
            "boxNumber": 123123,
            "id": 4,
            "parentQualifiedSn": "11310000054",
            "childQualifiedSn": null,
            "parentAddTime": "2022-09-21 11:35:13",
            "childAddTime": null
        }
    ]

查询方法

  /**
   * 多条件筛选对象数组,如果出现 Cannot read properties of null (reading 'toLowerCase')
 异常,请留意 条件对象或者对象数组某个字段是 null 的 会异常
   * @param {*} queryObj 筛选条件对象
   * @param {*} list 要筛选的对象数组
   * @returns 
   */
  filterData: function (queryObj, list) {
    
    
    let arr = list
    Object.keys(queryObj).forEach(key => {
    
    
      if (queryObj[key ] == undefined || queryObj[key ] == '') return arr
     arr = arr.filter(p => p[key] === null || p[key].toLowerCase().includes(queryObj[key].toLowerCase())) //匹配成功返回
    })
    return arr
  }

调用

let testSearch =  {
    
    
          boxNumber: '123',
          parentQualifiedSn: '你好',
          childQualifiedSn: '你好',
          addTime: '2022-02-02'
 }
 
console.info('筛选', filterData(testSearch, testArray ))

猜你喜欢

转载自blog.csdn.net/qq_40739917/article/details/126970200