You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断嵌套对象与数组中的所有值是否均为null并返回布尔值

多层嵌套对象全null校验实现方案

核心逻辑

通过递归遍历所有层级的属性值,只要命中任意一个非null值就直接返回true,遍历完成后未找到非null值则返回false,同时兼容数组、嵌套对象、基础值三类数据结构的判断。

代码实现

function checkHasNonNull(input) {
  // 当前值为null直接返回无有效非null值
  if (input === null) return false

  // 处理数组类型,遍历每一项递归校验
  if (Array.isArray(input)) {
    for (const item of input) {
      if (checkHasNonNull(item)) return true
    }
    return false
  }

  // 处理普通对象类型,遍历所有属性值递归校验
  if (typeof input === 'object') {
    for (const val of Object.values(input)) {
      if (checkHasNonNull(val)) return true
    }
    return false
  }

  // 非对象、非数组、非null的基础类型,属于非null值
  return true
}

调用示例

以你给出的全null测试对象为例:

// 测试用对象
const testObj = {
  employerCompanyName: null,
  companyBenefitsProviderName: null,
  companyRepresentative: null,
  website: null,
  logonID: null,
  password: null,
  benefitsDetails: [{ benefitsPackageType: null, benefitsCoverageDetails: [], policyNumber: null }],
  coverageDetails: [{ familyMemberCovered: null, currency: null, amount: null }],
  beneficiaryDetails: [{ beneficiary: null, allocation: null }],
  notes: null
}

console.log(checkHasNonNull(testObj)) // 输出 false
testObj.employerCompanyName = "阿里巴巴"
console.log(checkHasNonNull(testObj)) // 输出 true

拓展说明

如果你的业务场景中需要将0、''、false、undefined也等同于空值处理,只需要修改函数最后基础类型的判断逻辑即可,例如修改为:

// 拓展版,将空字符串、0、false、undefined也视为空
return !!input

内容的提问来源于stack exchange,提问作者Pozitivnuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:15:03