0
votes

.map renvoyant une chaîne dans un tableau au lieu d'un tableau de nombres

Jouer avec du code que j'ai trouvé et les résultats n'ont pas de sens pour moi.

Je ne comprends pas pourquoi le REPL pense que le tableau est une valeur de chaîne longue .. Je n'ai rien fait pour indiquer qu'il s'agit d'une chaîne et je me demande pourquoi la console me donne le résultat suivant.

var F =(...x) => x.map(v => x+1)  
var result = F([1,2,3]);
console.log(result);

F = (...x) => x.map(v => x+1)

//ACTUAL
F([1,2,3]) //["1,2,31"]

//EXPECTED
F([1,2,3]) //[2,3,4]


2 commentaires

Veuillez créer un exemple reproductible minimal . Ce que vous avez montré est conceptuel, voyons un exemple de travail réel.


x.map (v => x + 1) : x est le tableau, v l'élément courant, d'où x + 1 doit être v + 1


3 Réponses :


1
votes

Vous faites deux erreurs.

  • Vous utilisez des paramètres de repos mais vous transmettez un tableau.
  • Vous ajoutez à x qui est un tableau et sera converti en chaîne par l'utilisation de + . Vous renvoyez v+1

const F=(...x) => x.map(v => v+1)
console.log(F(1,2,3))

Si vous souhaitez utiliser les paramètres de repos, passez simplement 1 , 2 , 3 comme arguments séparés. p >

const F=(x) => x.map(v => v+1)
console.log(F([1,2,3]))


0 commentaires

3
votes

Vous passez un tableau comme argument car vous utilisez Paramètre de repos pour le paramètre de fonction, la valeur de x deviendrait [[1,2,3]] . Désormais, lorsque vous utilisez la carte, lors de la première itération, v serait [1,2,3] et [1,2,3] + 1 code > entraînerait une concaténation de chaînes puisque [1,2,3] n'est pas un nombre et alors que [1,2,3] se transforme en une chaîne, il en résulte une chaîne avec valeur séparée par des virgules.

Donc, soit passez les arguments en tant que multiples, soit utilisez un paramètre simple.

Comme:

F(1, 2, 3)
// or
F(...[1, 2, 3])

ou appelez une fonction comme: p>

function F(x){ return  x.map(v => x+1) }


0 commentaires

0
votes

Vous recherchez F = x => x.map (v => v + 1) , donc ...

F([1,2,3]) == [2, 3, 4] # evaluates to true

Il n'y a pas besoin pour la syntaxe de diffusion. La fonction F doit simplement accepter un tableau pour renvoyer le résultat de [1,2,3] .map (v => v + 1) . Vous aviez x.map (v => x + 1) qui n'utilise pas le paramètre v de la fonction passée dans le .map () code> fonction.


0 commentaires