web-dev-qa-db-fra.com

Index dans la fonction map ()

Il me manque une option pour obtenir le numéro d'index dans la fonction map en utilisant List à partir de Immutable.js:

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

La documentation montre que map() renvoie Iterable<number, M>. Y a-t-il une manière élégante de ce dont j'ai besoin?

140
Zygimantas

Vous pourrez obtenir l'itération actuelle index pour l'API map par le biais de son deuxième paramètre.

Voir aussi:https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Paramètres

rappeler - Fonction qui produit un élément du nouveau tableau, en prenant trois arguments:

1) currentValue
L'élément actuel en cours de traitement dans le tableau.

2) index
L'index de l'élément en cours de traitement dans le tableau.

3) tableau
La carte du tableau a été appelée.

Exemple:

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

Sortie:

L'itération actuelle est: 0 
L'élément actuel est: h

L'itération actuelle est: 1 
L'élément actuel est: e

L'itération actuelle est: 2 
L'élément actuel est: l

L'itération actuelle est: 3 
L'élément actuel est: l

L'itération actuelle est: 4 
L'élément actuel est: o

283
Samuel Toh

Array.prototype.map() index:

On peut accéder à l'index Array.prototype.map() via le deuxième argument de la fonction de rappel. Voici un exemple:

const array = [1, 2, 3, 4];


const map = array.map((x, index) => {
  console.log(index);
  return x + index;
});

console.log(map);

Autres arguments de Array.prototype.map():

  • Le troisième argument de la fonction de rappel expose le tableau sur lequel la carte a été appelée
  • Le deuxième argument de Array.map() est un objet qui sera la valeur this de la fonction de rappel. N'oubliez pas que vous devez utiliser le mot cléfunctionrégulier pour déclarer le rappel, car une fonction de flèche n'a pas de lien propre au mot clé this.

Par exemple:

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

Utilisation de 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