为什么在循环对象时不能显示属性的属性?

时间:2018-10-04 20:41:18

标签: javascript

假设我有这个对象:

const people = {
     frodo: { name: 'Frodo', age: 33 },
     aragorn: { name: 'Aragorn', age: 87 },
     legolas: { name: 'Legolas', age: 2931 }
}

假设我要遍历该对象的属性,如下所示:

for (var person in people) {
    console.log(person.name);
}

对于尝试访问的人的任何财产,我都不确定。为什么会发生这种情况?循环该对象的属性并仍然能够访问其自己的属性的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

for ... in循环迭代对象的键(属性)。所以

for (var person in people) {
  console.log(people[person].name);
}

将为您带来理想的结果。

变量person将在循环执行期间接收值“ frodo”,“ aragorn”和“ legolas”,这是您的person对象的键(属性)。

答案 1 :(得分:2)

使用for ... in statement获取对象的键。然后,您需要property accessor作为对象。

const people = {
     frodo: { name: 'Frodo', age: 33 },
     aragorn: { name: 'Aragorn', age: 87 },
     legolas: { name: 'Legolas', age: 2931 }
}

for (var person in people) {
    console.log(people[person].name);
}

答案 2 :(得分:1)

您需要查看代码中的person

const people = {
     frodo: { name: 'Frodo', age: 33 },
     aragorn: { name: 'Aragorn', age: 87 },
     legolas: { name: 'Legolas', age: 2931 }
}

for(person in people) console.log(person);

它是对象的名称,而不是对象本身。要访问它,您需要指定对象的位置:

  const people = {
         frodo: { name: 'Frodo', age: 33 },
         aragorn: { name: 'Aragorn', age: 87 },
         legolas: { name: 'Legolas', age: 2931 }
    }

    for(person in people) {
      console.log( people[person].age, people[person].name, people[person] );
    }

答案 3 :(得分:1)

.. in中的

返回对象中的每个键。您可以使用钥匙找人。

const people = {
     frodo: { name: 'Frodo', age: 33 },
     aragorn: { name: 'Aragorn', age: 87 },
     legolas: { name: 'Legolas', age: 2931 }
}

for(var key in people) {
    var person = people[key]
    console.log(person.name)
}