我想遍历JavaScript对象的属性
var obj =
{
a: 'value1',
b: 'value2',
c: 'value3',
d: 'value4'
};
for (var prop in obj) {
prop = 'xxx';
}
Run Code Online (Sandbox Code Playgroud)
但上面的代码不起作用.你能帮帮我怎么做吗?
Chr*_*nes 89
您应该检查该属性是否属于该对象而不是原型.
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
obj[prop] = 'xxx';
}
}
Run Code Online (Sandbox Code Playgroud)
Ali*_*aru 73
prop 将引用属性名称,而不是其值.
for (var prop in obj) {
obj[prop] = 'xxx';
}
Run Code Online (Sandbox Code Playgroud)
此外,您可能想要检查属性是否属于使用的对象hasOwnProperty.可能会发生某人向原型添加属性而这些属性也会被迭代for ... in.
mag*_*ter 20
以下是使用ES5完成的方法 - Object.keys():
Object.keys(obj).forEach(function(key, idx) {
...
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/magiccrafter/bvwenh5d/
Mozilla的文档:链接
使用 ecmascript2017:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
const object1 = {
a: 'somestring',
b: 42
};
for (let [key, value] of Object.entries(object1)) {
console.log(`${key}: ${value}`);
}
Run Code Online (Sandbox Code Playgroud)