js 遍历对象 删除值为空的属性

365 阅读1分钟
function compactObj(obj, fn) {
      for (var i in obj) {
        if (typeof obj[i] === 'object') {
          compactObj(obj[i], fn)
        }
        if (fn(obj[i])) {
          delete obj[i]
        }
      }
    }

    // 删除空对象 删除'', null, undefined
    function isEmpty(foo) {
      if (typeof foo === 'object') {
        for (var i in foo) {
          return false
        }
        return true
      } else {
        return foo === '' || foo === null || foo === undefined
      }
    }

    const obj = {
      a: 1,
      b: '',
      c: {
        d: {
          e: {}
        }
      }
    }

    // 调用方法
    compactObj(obj, isEmpty) // {a:1}
    console.log('compactObj', obj)