Hier ist eine kürzere Version:
%Vor% Die Funktion transform () ist wie reduce () , außer dass Sie nicht erwarten, dass Sie etwas zurückgeben. Da extend () das erste Argument ändert, können wir es einfach direkt an transform()
weiterleiten. Es ist in ary () verpackt, um sicherzustellen, dass nur 2 Argumente an es übergeben werden.
Um auf @ rcsole's große Antwort aufzubauen, funktioniert das gut:
%Vor%Lasst uns das in mehrere Teile aufteilen:
%Vor% Schritt 1 verwendet map
, um über jedes Element im Array (jedes Zustandsobjekt) zu iterieren. map
führt für jedes Objekt state
eine Funktion aus und gibt ein neues Objekt mit dem Status als Schlüssel und dem Namen als Wert zurück. Wir müssen state.state
in Klammern einschließen, da es sich um einen dynamischen Wert in einem Objektliteral handelt.
Schritt 2 verwendet Object.assign
, um alle neuen Statusobjekte im Array mappedStates
in ein neues Objekt zusammenzuführen (der erste Parameter {}
).
Wofür sind die drei Punkte ...
? Das ist der Spread-Operator. Es nimmt jedes Element im Array mappedStates
und wandelt sie in direkte Argumente der Methode Object.assign
um.
Dieses Beispiel macht es deutlich:
%Vor%ist dasselbe wie
%Vor%Das ist es!
Tags und Links javascript arrays object lodash