2016-07-14 6 views
42

Ich vermisse eine Option, wie die Indexnummer in der map Funktion erhalten List von Immutable.js mit:Index innerhalb map() Funktion

var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();

Documentation shows dass map() kehrt Iterable<number, M>. Gibt es einen eleganten Weg zu dem, was ich brauche?

+1

Es ist nicht offensichtlich, was Sie wollen. – zerkms

+0

Denken Sie daran, dass 'map' die Struktur des Arrays erhalten soll, das heißt, nur seine Werte sollten transformiert werden, nicht das Array selbst. – ftor

Antwort

93

Sie können die aktuelle Iteration index für die API map über den 2. Parameter abrufen.

Siehe auch:https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Parameter

Rückruf - Funktion, die ein Element des neuen Array erzeugt, wobei drei Argumente:

1) Current
Das aktuelle Element, das im Array verarbeitet wird.

2) Index
Der Index des aktuellen Elements, das im Array verarbeitet wird.

3) Array
Die Array-Map wurde aufgerufen.

Beispiel:

var list = [ 'h', 'e', 'l', 'l', 'o']; 
list.map((currElement, index) => { 
    console.log("The current iteration is: " + index); 
    console.log("The current element is: " + currElement); 
    console.log("\n"); 
    return 'X'; 
}); 

Output:

die aktuelle Iteration ist: 0
Das aktuelle Element ist: h

die aktuelle Iteration: 1
Das aktuelle Element ist: e

die aktuelle Iteration ist: 2
Das aktuelle Element ist: l

die aktuelle Iteration ist: 3
Das aktuelle Element ist: l

die aktuelle Iteration ist: 4
Das aktuelle Element ist : 0

+0

Awesome, danke, nicht sicher, wie ich das verpasst habe. – Zygimantas

+0

Sollte die Callback-Funktion der Map immer eine return-Anweisung haben? Was bedeutet "X" in deinem Code? –

+0

@HarshKanchina Die Operation 'map' wird zum Konstruieren eines neuen Arrays verwendet, indem die Elemente eines bestimmten Arrays durchlaufen werden. Um Ihre Frage zu beantworten, ist yes eine return-Anweisung erforderlich, und in diesem Fall gibt sie bei jeder Iteration den Wert 'X' zurück.Das Endprodukt des Codes lautet also: [[X, X, X, X]] –