变量obj={name:“西蒙”,年龄:“20”,服装:{style:“简单”,嬉皮士:假}}for(obj中的var propt){console.log(propt+':'+obj[propt]);}
变量propt如何表示对象的财产?它不是内置方法或属性。为什么它会产生对象中的每个属性?
变量obj={name:“西蒙”,年龄:“20”,服装:{style:“简单”,嬉皮士:假}}for(obj中的var propt){console.log(propt+':'+obj[propt]);}
变量propt如何表示对象的财产?它不是内置方法或属性。为什么它会产生对象中的每个属性?
当前回答
为了进一步完善接受的答案,值得注意的是,如果使用var object=object.create(null)实例化对象,那么object.hasOwnProperty(property)将触发TypeError。所以为了安全起见,您需要从原型中调用它,如下所示:
for (var property in object) {
if (Object.prototype.hasOwnProperty.call(object, property)) {
// do stuff
}
}
其他回答
您基本上希望循环遍历对象中的每个属性。
JSFiddle公司
var Dictionary = {
If: {
you: {
can: '',
make: ''
},
sense: ''
},
of: {
the: {
sentence: {
it: '',
worked: ''
}
}
}
};
function Iterate(obj) {
for (prop in obj) {
if (obj.hasOwnProperty(prop) && isNaN(prop)) {
console.log(prop + ': ' + obj[prop]);
Iterate(obj[prop]);
}
}
}
Iterate(Dictionary);
您可以使用for…访问对象的嵌套财产。。。in和forEach循环。
对于在:
for (const key in info) {
console.log(info[key]);
}
对于每个:
Object.keys(info).forEach(function(prop) {
console.log(info[prop]);
// cities: Array[3], continent: "North America", images: Array[3], name: "Canada"
// "prop" is the property name
// "data[prop]" is the property value
});
你可以使用Lodash。文件
var obj = {a: 1, b: 2, c: 3};
_.keys(obj).forEach(function (key) {
...
});
Dominik的回答很完美,我更喜欢这样做,因为读起来更干净:
for (var property in obj) {
if (!obj.hasOwnProperty(property)) continue;
// Do stuff...
}
JavaScript中的对象是财产的集合,因此可以在for-each语句中循环。
您应该将obj视为键值集合。