2017-08-20 5 views
0

私はこれら2つのループを持っています。最初のループでは、メッセージは私が言うことを正確に言う。 Hello Herbert, Hello PeterJavascript値の代わりに値が定義されていない

しかし、第2のものでは、 Hello undefined

これら2つのコードブロックの違いは何ですか。また、2番目のコードブロックはなぜ返されますかundefined

let people = [ 
 
    { 
 
     name: "Herbert", 
 
     occupation: "Vildstaed", 
 
     language: ["Finnish", "English", "German"] 
 
    }, 
 
    { 
 
     name: "Peter", 
 
     occupation: "Skalnstead", 
 
     language: ["German", "Livonian Dialect"] 
 
    } 
 
]; 
 

 
for(var i = 0; i < people.length; i++){ 
 
    alert("Hello " + people[i].name) 
 
} 
 

 
for(let person in people) { 
 
    alert("Hello " + person.name) 
 
}

答えて

1

For inループはkeysを返します。オブジェクト。だから、2番目の場合、personはあなたが期待するものではありません。 personだけを表示すると表示されます。

let people = [ 
 
    { 
 
     name: "Herbert", 
 
     occupation: "Vildstaed", 
 
     language: ["Finnish", "English", "German"] 
 
    }, 
 
    { 
 
     name: "Peter", 
 
     occupation: "Skalnstead", 
 
     language: ["German", "Livonian Dialect"] 
 
    } 
 
]; 
 

 
for(let person in people) { 
 
    alert("Hello " + person) 
 
}

I Sを、あなたがES6バージョンに代わりfor ofループを使用することができますやりたいか、単にキー

によって

let people = [ 
 
    { 
 
     name: "Herbert", 
 
     occupation: "Vildstaed", 
 
     language: ["Finnish", "English", "German"] 
 
    }, 
 
    { 
 
     name: "Peter", 
 
     occupation: "Skalnstead", 
 
     language: ["German", "Livonian Dialect"] 
 
    } 
 
]; 
 

 
for(let person of people) { 
 
    alert("Hello " + person.name) 
 
} 
 

 
for(let person in people) { 
 
    alert("Hello " + people[person].name) 
 
}

+0

を取得するにはee、thanks :) –

2

let people = [ 
 
    { 
 
     name: "Herbert", 
 
     occupation: "Vildstaed", 
 
     language: ["Finnish", "English", "German"] 
 
    }, 
 
    { 
 
     name: "Peter", 
 
     occupation: "Skalnstead", 
 
     language: ["German", "Livonian Dialect"] 
 
    } 
 
]; 
 

 
for(var i = 0; i < people.length; i++){ 
 
    alert("Hello " + people[i].name) 
 
} 
 

 
for(let person in people) { 
 
    console.log(person); 
 
    alert("Hello " + people[person].name) 
 
}

あなたは値の人がなっている見ることができるようにので、あなたが人々[人]を使用してアクセスする必要があり、配列のインデックスである

0
for(let person of people) { 
    alert("Hello " + person.name) 
} 
関連する問題