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]
3 Réponses :
Vous faites deux erreurs.
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]))
Vous passez un tableau comme argument car vous utilisez Paramètre de repos pour le paramètre de fonction, la valeur de Donc, soit passez les arguments en tant que multiples, soit utilisez un paramètre simple. Comme: ou appelez une fonction comme: p> 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. F(1, 2, 3)
// or
F(...[1, 2, 3])
function F(x){ return x.map(v => x+1) }
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.
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 êtrev + 1