Wie erstellt man ein JavaScript-Objekt mit einem Array und der Kartenfunktion?

8

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%     
DanielEli 13.06.2012, 00:34
quelle

3 Antworten

7

Verwenden Sie stattdessen eine Funktion .reduce() .

%Vor%

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.

    
user1106925 13.06.2012, 00:40
quelle
3

Die Funktion map übernimmt ein Array und gibt ein Array zurück. Nichts anderes. Aber Sie können reduce verwenden:

%Vor%

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:

  1. map: Ссылка
  2. reduce: Ссылка
Flambino 13.06.2012 00:42
quelle
0

hmm .. sieht so aus, als würde es in einer Funktion wie dieser gewickelt werden.

%Vor%     
DanielEli 13.06.2012 00:38
quelle

Tags und Links