美文网首页
对象判空(包括属性值为空、数组为空、子对象为空)

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

作者: 陈大事_code | 来源:发表于2021-02-20 09:33 被阅读0次
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
}

相关文章

网友评论

      本文标题:对象判空(包括属性值为空、数组为空、子对象为空)

      本文链接:https://www.haomeiwen.com/subject/xtrtfltx.html