如何仅清除JavaScript对象的属性值?
解决对象属性值清空的问题
我来帮你搞定这个问题!你之前的尝试没成功,核心原因是没搞清楚遍历过程中变量和原对象属性的关系——咱们先拆解下为什么那些方法不行:
- 不管是
$.each里的value = '',还是Object.values(obj).forEach里修改value,这里的value都是原对象属性值的副本(因为你的值都是字符串这种基本类型,是按值传递的),修改这个副本根本不会影响原对象里的属性。 delete value就更不对了,你删除的只是遍历函数里的局部变量,和原对象半毛钱关系都没有。
接下来给你几个靠谱的解决方案,任选其一就行:
方案1:原生JS用Object.keys遍历(最推荐)
直接拿到对象的所有键,然后通过键直接修改原对象的属性:
const obj = {"foo":"bar", "foo2":"bar2", "foo3":"bar3"}; Object.keys(obj).forEach(key => { obj[key] = ''; });
方案2:用for...in循环(兼容旧环境)
如果需要兼容一些老浏览器,用for...in更稳妥,记得加hasOwnProperty避免遍历原型链上的属性:
const obj = {"foo":"bar", "foo2":"bar2", "foo3":"bar3"}; for (const key in obj) { if (obj.hasOwnProperty(key)) { obj[key] = ''; } }
方案3:用jQuery的$.each正确写法
要是你习惯用jQuery,别去修改value参数,直接通过key操作原对象:
const obj = {"foo":"bar", "foo2":"bar2", "foo3":"bar3"}; $.each(obj, function(key) { obj[key] = ''; });
这几个方法都能直接修改原对象的属性,把所有值清空成空字符串。
内容的提问来源于stack exchange,提问作者Andrew Sunset
相关产品推荐
相关产品推荐

