这是代码:
var InvertedPeninsula = function() {
this.inhabitants = [
{
name: 'Sir Charles',
race: 'Human'
},
{
name: 'Ealei',
race: 'Elf'
}
];
// Adds an extra humans method property to the inhabitants array to return all Humans
this.inhabitants.humans = function() { /* returns all Human inhabitants */ };
};
// Create a new invertedPeninsula
var invertedPeninsula = new InvertedPeninsula();
// Log the name of each invertedPeninsula inhabitant
for (var i in invertedPeninsula.inhabitants) {
console.log(invertedPeninsula.inhabitants[i].name);
}
在我看来,它叫做2x。 3x来自哪里?阵列中只有2个单元格。
最佳答案
这正是他们使用for...in
迭代数组时遇到的陷阱。for...in
遍历所有可枚举的属性,因此humans
也被迭代。
数组中当然有2个对象,但是肯定具有三个属性:0
,1
,humans
,因此是3次。
invertedPeninsula.inhabitants.forEach(function(habitat){
console.log(habitat.name);
});
Array.forEach
是您最好的选择,因为它会遍历编号的属性。正常的for
循环也可以。