it-swarm.com.de

Index in der Map () - Funktion

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?

140
Zygimantas

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: h

Die aktuelle Iteration lautet: 1 
Das aktuelle Element ist: e

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

Die aktuelle Iteration lautet: 3 
Das aktuelle Element ist: l

Die aktuelle Iteration ist: 4 
Das aktuelle Element ist: o

283
Samuel Toh

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);

Andere Argumente von Array.prototype.map():

  • Das dritte Argument der Callback-Funktion macht das Array verfügbar, für das die Map aufgerufen wurde
  • Das zweite Argument von 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);

6

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);
0
David