如何不使用第三方包将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
相关产品推荐
相关产品推荐

