1
votes

Array.map: récupère l'index de chaque élément à utiliser dans la fonction de retour

Je recherche une commande qui renvoie l'index d'un élément pour pouvoir l'utiliser dans les fonctions de carte.

Voici un exemple:

function myFunction() {
  var a = [4,7,9];
  //Looking for a way to return ["index 0 : 4", "index 1 : 7", "index 2 : 9"]
  //Only workaround found so far :
  var i = -1;
  Logger.log(a.map(function(el) {i++; return "index " + i + " : " + el}));
}

I ' Je suis sûr qu'il existe un moyen plus soigné avec une commande qui me donnerait l'index de l'élément, mais toutes mes recherches Google ont été infructueuses jusqu'à présent.


0 commentaires

4 Réponses :


2
votes

Le deuxième paramètre de la fonction de rappel est index que vous pouvez utiliser

function myFunction() {
  var a = [4,7,9];
  console.log(a.map((v,i)=> "index " + i + " : " + v));
}

myFunction()

  Array.map((value,index,this))


0 commentaires

1
votes

Vous pouvez le rendre plus propre en trois étapes:

  • Utilisez le deuxième paramètre de rappel passé à map () qui est l'index de l'élément.
  • Utiliser la fonction flèche et renvoyer implicitement la valeur
  • Utilisez des chaînes de modèle au lieu de + encore et encore.

const myFunction = arr => console.log(arr.map((x,i) => `index ${i} : ${x}`));
myFunction([4,7,9])

Dans votre code ci-dessus, vous avez créé une fonction qui n'a aucun sens. Cette fonction doit prendre un tableau comme paramètre, puis consigner la valeur de cet arr particulier.

var a = [4,7,9];
let res = a.map((x,i) => `index ${i} : ${x}`);
console.log(res)


0 commentaires

1
votes

map code > vous donne déjà l'index. Le rappel obtient trois paramètres:

a.map(function(element, index, array) {return "index " + index + " : " + element})

Vous n'avez pas besoin de déclarer les trois (JavaScript n'est pas difficile à ce sujet), mais ils sont là si vous en avez besoin.


0 commentaires

1
votes

Vous pouvez également simplement utiliser Array. de puisque son deuxième argument est un Array.map :

console.log(Array.from([4,7,9], (x, i) => `index ${i} : ${x}`))

L'idée générale est d'utiliser le 2ème paramètre de la carte (qui vous fournit l'index d'itération actuel) et avec cela et la valeur actuelle pour construire votre résultat.


0 commentaires