2017-09-05 1 views
-2

Ich versuche, den Wert des Arrays innerhalb mehrerer Schleifen, aber wenn ich versuche, Index der ersten Schleife zu bekommen, ich bekomme nur die letzte.Set-Array innerhalb der Schleife funktioniert nicht Javascript

Beispiel wie dieses

start_date = 1; 
end_date = 4; 
parent = []; 
item = [ 
{item : 1}, 
{item : 2}, 
{item : 3} 
]; 

for(i = start_date;i <= end_date;i++){ 
    for(x = 0; x < item.length; x++){ 
     item[x].parent = i; 
    } 
parent.push(item) 
} 

aber der Ausgang immer 4,

parent = [ 
    [ 
     {item : 1,parent : 1}, 
     {item : 2,parent : 1}, 
     {item : 3,parent : 1}, 
    ], 
    [ 
     {item : 1,parent : 2}, 
     {item : 2,parent : 2}, 
     {item : 3,parent : 2}, 
    ], 
    [ 
     {item : 1,parent : 3}, 
     {item : 2,parent : 3}, 
     {item : 3,parent : 3}, 
    ], 
    [ 
     {item : 1,parent : 4}, 
     {item : 2,parent : 4}, 
     {item : 3,parent : 4}, 
    ], 
] 

Ich möchte die Ausgabe wie

sorry für mein schlechtes Englisch

+3

Ausgang zu erwarten? –

+2

Dies liegt daran, dass Sie das gleiche Array viermal durchlaufen und es dreimal überschrieben wird. Es wird also die Zahlen 1-4 haben, aber da es überschrieben wird, werden nur 4 angezeigt. –

+2

Sie überschreiben den Wert bei jeder Iteration, also ist es normal, dass Sie '4' erhalten. Welche Leistung erwarten Sie? – Jerodev

Antwort

1

Sie setzen die Elemente in das Array in der ersten Iteration zu 1, in der Sekunde zu 2 ... und in der letzten zu 4

Also die Ausgabe ist richtig, was versuchen Sie zu erreichen?


bearbeiten nach Frage Update:

Ihr Problem ist, dass Sie Sie immer in allen Array verweisen das gleiche Objekt. Aber dieses Objekt wird jedes Mal überschrieben, wenn Sie item[x].parent = i aufrufen, also müssen Sie für das Array ein Objekt für sich selbst erstellen.

start_date = 1; 
 
end_date = 4; 
 
parent = []; 
 
item = [ 
 
{item : 1}, 
 
{item : 2}, 
 
{item : 3} 
 
]; 
 

 
for(i = start_date;i <= end_date;i++){ 
 
    var temp = []; 
 
    for(x = 0; x < item.length; x++){ 
 
    temp[x] = {}; 
 
    temp[x].item = item[x].item; 
 
    temp[x].parent = i 
 
    } 
 
parent.push(temp) 
 
}

+0

Ich wurde aktualisiert meine Frage –

+0

Werfen Sie einen Blick auf meine aktualisierte Antwort –

Verwandte Themen