Ich habe ein Array von Channels , das ich in ein einzelnes Objekt (channelSettings) mit einer true / false Eigenschaft für jeden Channel
Ich habe es mit dem untenstehenden Code funktioniert, aber es scheint ausführlich. Gibt es einen Weg, es ohne die "Temp" Var zu tun? Wenn ich davon reiten kann, dann könnte ich auch von der Selbstausführungsfunktion reiten.
%Vor%Ich versuche, die Map-Funktion dazu zu bringen, ein Objekt mit Eigenschaften anstelle eines Arrays zurückzugeben. Ist das möglich? Ist es falsch geführt? Vorschläge?
Das ist, was ich hoffe, dass es am Ende aussieht:
%Vor% Verwenden Sie stattdessen eine Funktion .reduce()
.
DEMO: Ссылка
Der erste Parameter verweist auf das zuvor zurückgegebene Element, mit Ausnahme der ersten Iteration, bei der entweder auf das erste Element im Array oder auf das übersetzte Element verwiesen wird, das wir als leeres Objekt angegeben haben.
Der zweite Parameter verweist auf den aktuellen Wert im Array. Solange wir immer obj
zurückgeben, ist der erste Parameter immer das Objekt, ebenso der endgültige Rückgabewert.
Die Funktion map
übernimmt ein Array und gibt ein Array zurück. Nichts anderes. Aber Sie können reduce
verwenden:
Nun, "bin ich nicht" bezwinge mich dazu, aber trotzdem:
map
gibt nicht nur Arrays zurück, sondern gibt auch nur Arrays mit der gleichen Länge wie das Original zurück. Es ist dazu bestimmt, die Werte eines Arrays 1: 1 in ein neues Array zu transformieren. reduce
soll "ein Array auf einen einzigen Wert reduzieren". Daher seine Verwendung hier.
Wenn Sie eine direkte for
-Schleife oder die forEach
-Methode verwenden, um einem Objekt Eigenschaften hinzuzufügen, müssen Sie dieses Objekt deklarieren. Also, nein, Sie können nicht auf temp
in Ihrem Code verzichten (es sei denn, Sie verwenden reduce
anstelle einer Schleife).
Weitere Informationen zu MDN:
Tags und Links javascript