天天看點

如何使用js深度删除對象中為'空'的字段?

/**
 * 去除對象中所有符合條件的對象
 * @param {Object} obj 來源對象
 * @param {Function} fn 函數驗證每個字段
 */
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}

​
           

繼續閱讀