对象判空(包括属性值为空、数组为空、子对象为空)

2021-02-20  本文已影响0人  陈大事_code
import { isObject } from 'lodash'

// 判断对象是否为”真“空
function isObjectEmpty(obj = {}) {
  // 不是对象,直接返回false
  if (!isObject(obj)) return false

  // 对象没有属性值,直接返回true
  if (!Object.keys(obj).length) {
    return true
  }

  // 常规情况下,有多个属性值,包括数组、子对象
  for (let key in obj) {
    let val = obj[key]

    // 属性值为基本数据类型情况下 
    if (typeof val !== 'object' && val) {
      return false
    }

   // 属性值为引用类型,数组、对象
    if (typeof val === 'object') {
      if (Array.isArray(val)) {
        // 数组为空
        if (val.length) return false
      } else {
        // 对象为空
        if (!isObjectEmpty(val)) return false
      }
    }
  }
  return true
}
上一篇 下一篇

猜你喜欢

热点阅读