2017-08-20 5 views
0

So habe ich diese beiden for-Schleifen. In der ersten Schleife sagt die Nachricht genau, was ich sagen will; Hello Herbert, Hello Peter.Javascript undefined Wert anstelle von Wert

Aber in der zweiten sagt es; Hello undefined.

Was ist der Unterschied zwischen diesen beiden Codeblöcken, und warum gibt der zweite Code undefined zurück?

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) 
 
}

Antwort

1

For in Schleife wird Ihnen die keys, nicht zurück Die Objekte. Also für den zweiten Fall ist die person nicht die, die Sie erwarten. Sie können es sehen, indem Sie nur die person zeigen.

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) 
 
}

zu tun, was Sie wollen, Sie for of Schleife statt in ES6 Version verwenden können, oder einfach nur durch Schlüssel

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

I s ee, danke :) –

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) 
 
}

Wie können Sie die Werte Person zu sehen bekommt der Index des Arrays ist, daher müssen Sie für den Zugriff Menschen [person] mit

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