2016-05-07 19 views
-5

Kann mir jemand die zweite Zeile erklären? Warum ohne dies wird es nicht funktionieren?Was bedeutet dieser Code? JavaScript

dataStuff.forEach(function (a) { 
    grouped[a.Tag] = grouped[a.Tag] || []; 
    grouped[a.Tag].push(a); 
}); 
+1

Versuchen Sie zu erklären, was 'gruppiert [a.Tag] .push (a);' zuerst tut. Ihre Antwort beruht auf Ihrem Verständnis dieser Linie. – zerkms

+0

Was wird nicht korrekt funktionieren? Was ist die Eingabe und erwartete Ausgabe? Die Frage ist sehr unklar. – freakish

Antwort

1
dataStuff.forEach(function (a) { 
    grouped[a.Tag] = grouped[a.Tag] || []; //if grouped[a.Tag] array is undefined make it an array 
    grouped[a.Tag].push(a);    //try to push into array. 
}); 

Code erklären.

Die Linie

grouped[a.Tag].push(a); sollte push einen Wert in den Array grouped[a.Tag]. Wenn das Array grouped[a.Tag] überhaupt nicht definiert ist, erhalten Sie eine Fehlermeldung mit der Nummer grouped[a.Tag] is undefined. Um dieses Problem zu überwinden, wird diese Linie

grouped[a.Tag] = grouped[a.Tag] || []; verwendet.

Hier grouped[a.Tag] || [] wenn überhaupt grouped[a.Tag] Ihre obige Zeile undefiniert wird

grouped[a.Tag] = []; gleichwertig sein, dass ein neues Array erstellen.

Sonst, wenn grouped[a.Tag] definiert ist, dann müssen Sie nichts tun, also ordnen Sie es sich selbst zu.

Also die Idee ist, wenn grouped[a.Tag] ist undefiniert dann erstellen Sie ein neues Array sonst nichts tun, wie Sie gut sind zu gehen.