2017-01-09 5 views
-1

Ich habe ein JavaScript-Variable, und ich versuche, es in einer anderen Funktion zu initialisieren, mit der folgenden for Schleife:schieben JavaScript Index 1 statt 0

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
     test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test.det);

Für einig Grund, ich bekomme immer noch -1 & -1 als meine Werte von x & y, wenn ich versuche, auf test.det[0] zuzugreifen. Ich bekomme nur die ersten Werte, wenn ich auf Index 1 zugreife. Es scheint, als ob alle meine Indizes verschoben sind, aber ich habe keine Ahnung, warum das passieren würde.

+2

Aber '.push()' immer fügt am Ende des Arrays hinzu, und Ihr Array beginnt mit einer Sache darin. – Pointy

+0

Ich verstehe. Ich bin nicht vertraut mit Javascript es scheint die 'det: [{x: -1, y: -1}]' Linie in meinem 'test' ist das erste Element im Array? – mysticalstick

+1

Rechts. Wenn Sie mit einem leeren Array beginnen wollen, verwenden Sie einfach '[]'. – Pointy

Antwort

2

Array#push wird ein weiteres Element nach dem aktuellen letzten Element hinzugefügt. Zur erneuten Verwendung Zuordnung = initialisieren:

var test = { 
 
    det: [{x: -1, y: -1}] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det[i] = ({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

Oder Sie einfach das Array und verwenden Array#push:

var test = { 
 
    det: [] 
 
}; 
 

 
for (var i = 0; i < 4; i++) { 
 
    test.det.push({x:10+i, y:10}); 
 
} 
 

 
console.log(test);

+0

Beachten Sie, dass es bei diesem Code keinen Grund gibt, den Inhalt von 'det' zu deklarieren. Verwenden Sie einfach 'var test = {det: []}' – Phrogz

+0

@Phrogz - Ich denke, dass er versucht, ein vorhandenes Array neu zu initialisieren. Wenn nicht, kann er mit 'var test = {det: []}' beginnen und push verwenden. –

Verwandte Themen