遍历Javascript对象的属性
我想遍历JavaScript对象的属性
var obj = { a: 'value1', b: 'value2', c: 'value3', d: 'value4' }; for (var prop in obj) { prop = 'xxx'; }
但上面的代码不起作用。 你能帮我怎么做吗?
prop
将引用属性名称,而不是其值。
for (var prop in obj) { obj[prop] = 'xxx'; }
构build文档。
你也可能想检查属性是否属于使用hasOwnProperty
的对象。 有人可能会为原型添加属性,而这些属性也会被重复使用。
你应该检查属性属于对象而不是原型。
for (var prop in obj) { if (obj.hasOwnProperty(prop)) { obj[prop] = 'xxx'; } }
这是如何使用ES5 – Object.keys()完成的:
Object.keys(obj).forEach(function(key, idx) { ... });
http://jsfiddle.net/magiccrafter/bvwenh5d/
Mozilla的文档: 链接
如果你在一个ES6友好的环境中,你也可以尝试使用更接近你的原始尝试的for …循环。
编辑:正如Caleb指出的, for..of
是特定于Symbol.iterator属性的集合(例如,不是标准的JS对象)。
但是我在这里留下这个答案,以防其他人发现它在某些时候有用,明确指出for..of
在这里不是一个好的解决scheme。
let obj = {}; for (let prop of obj) { // This will throw an error prop = 'xxx'; }
参考: MDN – 为…
- 调用从Ajax响应返回的JavaScript函数
- 我怎样才能删除JavaScript的所有cookie?
- 缩放图像以适应canvas
- 如何使用地理位置获取访问者的位置(即国家/地区)?
- 有没有在JavaScript的方式来检测是否通过刷新,后退button或closures浏览器导致卸载事件?
- 在input隐藏字段中存储返回json值
- 我怎样才能得到用户的本地时间,而不是服务器的时间?
- 从ASP.NET MVC 3开始,MicrosoftAjax.js,MicrosoftMvcAjax.js和MicrosoftMvcValidation.js是否被废弃?
- 创build一个“Hello World”WebSocket示例