JavaScript/Vue中如何清空对象的所有属性值?
清空JavaScript对象属性的两种实用方案
一、直接删除所有属性(让对象变空)
你现在写的代码已经能实现删除mappingData的所有自有属性,最终让它变成空对象:
for (const prop of Object.getOwnPropertyNames(this.mappingData)) { delete this.mappingData[prop]; }
嫌麻烦的话也可以用更简洁的写法:
Object.keys(this.mappingData).forEach(prop => delete this.mappingData[prop]);
如果允许直接替换整个对象,最简单的方式是直接赋值空对象:
this.mappingData = {};
注意:直接赋值空对象不会影响其他指向原对象的引用,而delete方式会修改原对象本身。
二、保留属性结构,仅清空属性值
要是你想保留mappingData的属性结构(比如留着projectFieldOptions数组、safety子对象的框架,只清空内容),得递归处理不同类型的属性:
function clearObjectValues(obj) { for (const prop in obj) { if (obj.hasOwnProperty(prop)) { const val = obj[prop]; if (Array.isArray(val)) { // 清空数组内容,保留数组本身 val.length = 0; } else if (typeof val === 'object' && val !== null) { // 递归处理子对象 clearObjectValues(val); } else { // 基础类型值置空,也可以改成null/undefined obj[prop] = ''; } } } } // 调用方法清空所有值 clearObjectValues(this.mappingData);
这个方法会根据属性类型做对应处理:字符串、数字这类基础类型直接置空;数组清空元素但保留数组引用;子对象则递归清空内部的属性值。
内容的提问来源于stack exchange,提问作者Shibbir
相关产品推荐
相关产品推荐

