
本文介绍一种简洁可靠的方法,遍历 JavaScript 对象的每个属性,将空字符串值('')统一替换为 `''`,适用于表单渲染、模板填充等需兜底显示的场景。
本文介绍一种简洁可靠的方法,遍历 javascript 对象的每个属性,将空字符串值('')统一替换为 '__',适用于表单渲染、模板填充等需兜底显示的场景。
在实际开发中,我们常需要对用户输入或后端返回的对象进行标准化处理——尤其当某些字段为空字符串('')时,直接展示会导致界面不美观或语义不清。此时,用双下划线 '__' 作为占位符是一种轻量且直观的兜底策略。
实现该功能的核心逻辑非常简单:遍历对象所有自有可枚举属性,判断其值是否严格等于空字符串,若是,则原地替换为 '__'。以下是推荐的实现方式:
function findAddress(obj) {
for (let property in obj) {
if (obj[property] === '') {
obj[property] = '__';
}
}
return obj;
}
const output = { street: 10, house: '', society: 'Earth Perfect' };
const res = findAddress(output);
console.log(res);
// 输出: { street: 10, house: '__', society: 'Earth Perfect' }
✅ 关键说明:
- 使用 for...in 遍历确保覆盖所有可枚举属性(注意:若需排除原型链属性,可加 hasOwnProperty 判断);
- 采用严格相等 ===,避免将 null、undefined 或 0 等误判为“缺失”;
- 此函数直接修改原对象(mutating)。如需保持不可变性(immutable),应先深拷贝对象再操作,例如使用 { ...obj }(浅拷贝)或结构化克隆(structuredClone(obj));
- 若需同时处理 null 或 undefined,可扩展条件:if (obj[property] == null || obj[property] === ''),但请谨慎评估业务语义——空字符串与 undefined 的含义通常不同。
⚠️ 注意:原始代码中存在多处逻辑错误,例如误将 obj.length 用于普通对象(对象无 length 属性)、错误引用未定义变量 values、混淆 objects 与 object 等。本方案摒弃了数组式索引思维,回归对象本质,更健壮、易读、可维护。










