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

如何不使用第三方包将JavaScript对象中的空字符串值替换为null

方案1:仅处理单层对象(匹配你给出的示例场景)

如果你不需要处理对象内嵌套的子对象/数组内的空字符串,只需要遍历顶层属性即可:

修改原对象的写法

for (const key in person) {
  // 严格匹配空字符串才替换
  if (person[key] === "") {
    person[key] = null;
  }
}

不修改原对象,返回新对象的写法

const newPerson = Object.fromEntries(
  Object.entries(person).map(([key, value]) => [
    key,
    value === "" ? null : value
  ])
)

方案2:通用递归方案(支持深层嵌套对象/数组)

如果你的对象存在嵌套结构(比如属性值是对象、数组,内部也可能有空字符串需要替换),可以用原生JS写递归函数处理,不需要任何第三方依赖:

function replaceEmptyStrToNull(input) {
  // 基础类型处理:空字符串转null,其余原样返回
  if (input === null || typeof input !== "object") {
    return input === "" ? null : input;
  }
  // 数组类型处理:遍历每一项递归处理
  if (Array.isArray(input)) {
    return input.map(item => replaceEmptyStrToNull(item));
  }
  // 普通对象处理:遍历每个属性递归处理
  return Object.fromEntries(
    Object.entries(input).map(([key, value]) => [
      key,
      replaceEmptyStrToNull(value)
    ])
  )
}

// 调用示例
const processedPerson = replaceEmptyStrToNull(person);

额外说明

  • 上述判断默认仅替换完全为空的字符串"",如果你需要把仅包含空白字符的字符串(比如" ")也替换为null,可以把判断条件从input === ""改为typeof input === "string" && input.trim() === ""即可。
  • 所有方案均为原生JS实现,未依赖任何第三方NPM包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:21:01