Ich vermisse eine Option, wie man die Indexnummer in der map
-Funktion mit List
von Immutable.js
erhält
var list2 = list1.map(mapper => { a: mapper.a, b: mapper.index??? }).toList();
Die Dokumentation zeigt dass map()
Iterable<number, M>
zurückgibt. Gibt es einen eleganten Weg zu dem, was ich brauche?
Sie können die aktuelle Iteration index
für die map
-API über ihren 2. Parameter abrufen.
Siehe auch:https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map
Parameter
ruf zurück - Funktion, die ein Element des neuen Arrays erzeugt, wobei drei Argumente verwendet werden:
1) Stromwert
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';
});
Ausgabe:
Die aktuelle Iteration ist: 0
Das aktuelle Element ist: hDie aktuelle Iteration lautet: 1
Das aktuelle Element ist: eDie aktuelle Iteration ist: 2
Das aktuelle Element ist: lDie aktuelle Iteration lautet: 3
Das aktuelle Element ist: lDie aktuelle Iteration ist: 4
Das aktuelle Element ist: o
Array.prototype.map()
index:Über das zweite Argument der Rückruffunktion kann auf den Index Array.prototype.map()
zugegriffen werden. Hier ist ein Beispiel:
const array = [1, 2, 3, 4];
const map = array.map((x, index) => {
console.log(index);
return x + index;
});
console.log(map);
Array.prototype.map()
:Array.map()
ist ein Objekt, das der this
-Wert für die Rückruffunktion ist. Beachten Sie, dass Sie das regular function
-Schlüsselwort verwenden müssen, um den Rückruf zu deklarieren, da eine Pfeilfunktion keine eigene Bindung an das this
-Schlüsselwort hat.Zum Beispiel:
const array = [1, 2, 3, 4];
const thisObj = {prop1: 1}
const map = array.map( function (x, index, array) {
console.log(array);
console.log(this)
}, thisObj);
Mit Ramda:
import {addIndex, map} from 'ramda';
const list = [ 'h', 'e', 'l', 'l', 'o'];
const mapIndexed = addIndex(map);
mapIndexed((currElement, index) => {
console.log("The current iteration is: " + index);
console.log("The current element is: " + currElement);
console.log("\n");
return 'X';
}, list);