2016-11-13 2 views
-1
sorted = Object.keys(PLAYER_LIST).sort(function(a,b){return a.score - b.score}); // have key value 
console.log(PLAYER_LIST[sorted[0]].team); // result:"A" 

for(var loop=0; loop<=sorted.length; loop++) { 
    if(PLAYER_LIST[sorted[loop]].team == "A") { // error 
      some code... 
    } 
    } 

Wenn ich so sortiere. console.log funktioniert gut. Aber wenn der Satz nicht funktioniert. Ich erhalte eine Fehlermeldung. Ich weiß nicht warum. Bitte hilf mir.Zugriff Eigenschaft in node.js

if(PLAYER_LIST[sorted[loop]].team == "A") { 
          ^

TypeError: Cannot set property 'team' of undefined 

Antwort

0

der Schleife geht einen Schritt zu weit

for (var loop = 0; loop <= sorted.length; loop++) { 
//      ^^ here 

Eine Arrays Länge beginnt bei Null, wenn es leer ist, und ist 1 wenn das Array ein Element enthält.

Wenn Sie ein Array

var array = ['a'] 

Arrays Null sind basiert, so dass die erste und einzige Element ist array[0], und die Länge ist 1

Wenn Sie durchlaufen und Sie gehen den ganzen Weg zu den Arrays Länge, gehen Sie einen Index zu viel, und Sie am Ende versuchen, array[1] zu bekommen, die nicht existiert.

Was Sie wollten, war

for (var loop = 0; loop < sorted.length; loop++) {... 
+0

vielen Dank !!!!!!! – firepunch

+0

mein schrecklicher Fehler .. :( – firepunch

Verwandte Themen