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?
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: hL'itération actuelle est: 1
L'élément actuel est: eL'itération actuelle est: 2
L'élément actuel est: lL'itération actuelle est: 3
L'élément actuel est: lL'itération actuelle est: 4
L'élément actuel est: o
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);
Array.prototype.map()
: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éfunction
ré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);
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);