523 votes

Index dans la fonction map()

Il me manque une option permettant d'obtenir le numéro d'index à l'intérieur de l'interface de l'utilisateur. map en utilisant List de Immutable.js :

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

La documentation montre que map() renvoie à Iterable<number, M> . Existe-t-il un moyen élégant de répondre à mes besoins ?

1 votes

Ce que vous voulez n'est pas évident.

0 votes

Gardez à l'esprit que map est censé préserver la structure du tableau, c'est-à-dire que seules ses valeurs doivent être transformées, pas le tableau lui-même.

0 votes

Array.prototype.map() créer un nouveau tableau en utilisant la fonction de rappel comme transformation

911voto

Samuel Toh Points 7100

Vous serez en mesure d'obtenir les données de l'itération en cours. index pour le map par le biais de son deuxième paramètre.

Exemple :

const 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 currElement; //equivalent to list[index]
});

Sortie :

The current iteration is: 0 <br>The current element is: h

The current iteration is: 1 <br>The current element is: e

The current iteration is: 2 <br>The current element is: l

The current iteration is: 3 <br>The current element is: l 

The current iteration is: 4 <br>The current element is: o

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

Paramètres

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

1) Valeur actuelle
L'élément en cours de traitement dans le tableau.

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

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

0 votes

La fonction de rappel de la carte doit-elle toujours comporter une déclaration de retour ? Que signifie 'X' dans votre code ?

1 votes

@HarshKanchina Le map est utilisée pour construire un nouveau tableau en itérant à travers les éléments d'un tableau donné. Pour répondre à votre question, oui, une déclaration de retour est nécessaire, et dans ce cas, elle renvoie la valeur 'X' à chaque itération. Ainsi, le produit final du code sera [ 'X', 'X','X','X' ]

0 votes

Mais 'X' n'est défini nulle part. Alors à quoi fait-il référence ? Comment la fonction sait-elle à quoi X fait référence ici ?

68voto

Array.prototype.map() l'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);

D'autres arguments de Array.prototype.map() :

  • Le troisième argument de la fonction callback expose le tableau sur lequel map a été appelée
  • Le deuxième argument de Array.map() est un objet qui sera le this pour la fonction de rappel. Gardez à l'esprit que vous devez utiliser la fonction régulier function mot-clé afin de déclarer la fonction de rappel, car une fonction de flèche n'a pas sa propre liaison à l'interface de l'utilisateur. this mot-clé.

Par exemple :

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

const thisObj = { prop1: 1 }

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

7voto

  • Supposons que vous ayez un tableau comme

    const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

    arr.map((myArr, index) => {
      console.log(`your index is -> ${index} AND value is ${myArr}`);
    })

    output will be index is -> 0 AND value is 1 index is -> 1 AND value is 2 index is -> 2 AND value is 3 index is -> 3 AND value is 4 index is -> 4 AND value is 5 index is -> 5 AND value is 6 index is -> 6 AND value is 7 index is -> 7 AND value is 8 index is -> 8 AND value is 9

3voto

David Points 3506

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X