去掉参数中的前后空格

642 阅读1分钟

在列表查询的时候由于查询的信息是复制过来的,可能会出现字符串前后空格,导致查询不到数据

我打算在请求中集中处理所有参数的空格问题

不多说,直接上码

    const list = {
        a:1,
        b:" zjp ",
        c:" 你好",
        d:"123 ",
        e:null,
        f:undefined,
        g:[1,2,3],
        h:[" 4","5 "," 6 ",["7 "," 8"," 9 ",[' 10',"11 "]]],
        i:[
          {id:1,name:'张三 '},
          {id:2,name:' 李四 '}
        ],
        j:{"aa":' 一个对象 ',"bb":'王五','cc':{"dd":' 赵六'}},
        z:''
      }

list就是要传的参,进行处理

  // 用于去掉空格的
  const trim = (str) => {
       return str.replace(/^\s*(.*?)[\s\n]*$/g,'$1');
  }
  // 类型判断
  const toType = (obj) => {
       return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
  }
    const trimHanlde = (data) => {
       let param = data
       if( !param || toType(param) != 'object' || param == "{}" ){ return {} }
       for(let item in param){
         if( toType(param[item]) == 'object' ){
           param[item] = trimHanlde(param[item])
         }
         if( toType(param[item]) == 'array' ){
           let newArr = param[item]
           if( newArr.length > 0 ){
             newArr = depArrHandle(newArr)
           }
         }
          param[item] = toType(param[item]) == 'string' ? trim(param[item]) : param[item]
       }

       return param
     }

     let depArrHandle = (arr) => {
       if( !arr || toType(arr) != 'array' ){ return [] }
       arr.map( (i,index) => {
         if( toType(i) == 'array' ){
           i = depArrHandle(i)
         }
         if( toType(i) == 'object' ){
           i = trimHanlde(i)
         }
        arr[index] = toType(i) == 'string'? trim(i):i
      })
      return arr
     }

各位大佬,现在这样处理是可以解决问题的,但觉得处理的太繁琐了,有什么最优方法没