2017-02-08 2 views
0

Ich habe ein leeres Array füllen ist, dass ich mit Werten füllen möchte, dass ich von einer Schleife bin immer wie:Warum ist Javascript Array mit Schlüsselwerten

var testArray = []; 
 
var data = [ 
 
    {values:[3,4,3,4]}, 
 
    {values:[3434]}, 
 
    {values:[3,43,4]} 
 
]; 
 

 
for (i = 0; i < data.length; i++) { 
 
    amounts = data[i].values.length; 
 
    console.log(amounts); 
 
    testArray.push(amounts); 
 
} 
 
console.log(testArray);

Als ich console.log() die 'Mengen' Variable, ich bekomme eine Liste aller meiner ganzen Zahlen, aber wenn ich die Variable 'testArray' console.log(), bekomme ich ein Array von Schlüsselwerten, wie testArray = [0: 126, etc].

Warum wird mein Array nicht nur mit den Beträgen gefüllt?

+0

Array hat numerische Indizes Recht haben? – Rayon

+3

Bitte posten Sie ein jsfiddle .. –

+0

Ja, aber ich möchte mein Array wie ... aussehen [124, 201, 104, 103]. Warum füllen die "Mengen" nicht nur das Array? – JordanBarber

Antwort

1

Es ist, weil Sie die length jedes values in amounts sind Speichern und drücken Sie dann, dass amounts in die testArray so das Ergebnis wird eine Reihe von Längen nicht Werte sein. Wenn Sie versuchen, die values direkt schieben Sie sich mit einem zweidimensionalen Feld beenden, was Sie tun sollten, ist concat wie folgt zu verwenden:

var testArray = []; 
 
var data = [ 
 
    {values:[3,4,3,4]}, 
 
    {values:[3434]}, 
 
    {values:[3,43,4]} 
 
]; 
 

 
for (i = 0; i < data.length; i++) { 
 
    amounts = data[i].values; // amounts should be the values array not its length 
 
    
 
    testArray = testArray.concat(amounts); // concat testArray with the current values array and store it back into testArray to continue accumulatig the result 
 
} 
 

 
console.log(testArray);

Verwandte Themen