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

如何移除包含嵌套对象与数组的对象中值为空字符串的字段

JavaScript 嵌套对象空字符串字段清理实现

以下代码完全匹配你提出的清理规则,支持多层嵌套对象、嵌套数组的递归处理:

function cleanEmptyFields(input) {
  // 处理数组类型
  if (Array.isArray(input)) {
    return input
      .map(item => cleanEmptyFields(item))
      // 过滤掉处理后为空对象的数组元素
      .filter(item => !(typeof item === 'object' && item !== null && Object.keys(item).length === 0))
  }
  // 处理普通对象类型
  if (typeof input === 'object' && input !== null) {
    const cleanedObj = {}
    for (const [key, value] of Object.entries(input)) {
      // 值为空字符串直接跳过不保留
      if (value === '') continue
      // 递归处理嵌套的对象/数组
      const processedVal = cleanEmptyFields(value)
      // 处理后得到空对象也跳过不保留
      if (typeof processedVal === 'object' && processedVal !== null && Object.keys(processedVal).length === 0) {
        continue
      }
      cleanedObj[key] = processedVal
    }
    return cleanedObj
  }
  // 数字、布尔值等非对象/数组的基础类型直接返回
  return input
}

调用示例

使用你提供的原对象调用函数即可得到符合预期的结果:

const result = cleanEmptyFields(obj)
console.log(result)

输出结果

{
  name: 'Red Boy',
  price: '350',
  stock: 20,
  category: {
    name: ''
  },
  weight: '90kg',
  dimensions: {
    width: '50cm',
    length: '70cm'
  },
  suitable: [
    { name: 'Yoga' },
    { name: 'Winter' }
  ],
  additionalInfo: [
    { field: 'closure', value: 'Button' },
    { field: 'collar' }
  ]
}

说明:若数组中存在{ field: '', value: '' }这类全空字符串的对象元素,处理后会变成空对象,会被直接从数组中过滤移除,完全符合你提出的规则要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:00