前端根据对象的值对对象数组进行过滤

106 阅读1分钟
listfilter(list=[],params={}){
      params = JSON.parse(JSON.stringify(params))
      let filterStr = ''
      Object.keys(params).forEach(keys =>{ //过滤出有值的参数,并转化为判断字符串
        if(params[keys]){
          filterStr = 'item.'+keys + '==' + JSON.stringify(params[keys]) + '&&' + filterStr
        }
      })
      filterStr = filterStr.includes('=')?filterStr.slice(0,filterStr.length -2):'' //有值的话去掉最后两个&&
      let newlist = []
      if(filterStr){ // 有值走过滤,没有等于原数组
        newlist = list.filter(item => {return eval(filterStr) })
      } else {
        newlist = list
      }
      return newlist
    }