Cet appel
[0].map(Array);
vous donne le même résultat que si vous aviez écrit quelque chose comme ceci :
[0].map(function (value, index, array) {
return Array(value, index, array);
})
Carte appelle la fonction Array avec trois paramètres : la valeur de l'élément, l'index de l'élément et le tableau entier. Cet appel à Array
retourne un tableau avec 3 éléments : valeur (nombre) 0
), indice (nombre 0
), tableau entier ( [0]
).
Et ce nouveau tableau est enveloppé dans le tableau original, parce que vous avez mappé l'élément original (numéro 0
) au nouvel élément (tableau de 3 éléments)
Remarque : vous avez peut-être l'habitude de n'utiliser que le premier paramètre, comme dans l'exemple ci-dessous.
array.map(function (a) { return a * a; });
ou en utilisant seulement deux pour obtenir également l'indice
array.map(function (item, index) { return "index=" + index + ", value=" + item; });
Mais vous devez vous rappeler que map
fournit toujours 3 paramètres, il suffit de les ignorer dans votre fonction de rappel. C'est aussi la raison pour laquelle un code comme :
[0].map(String);
renvoie à
["0"]
C'est parce que Chaîne de caractères ne s'intéresse qu'au premier paramètre et ignore les autres paramètres passés. Si vous appelez
String(11, "Some", "other", "ignored", "parameters")
vous obtiendrez toujours
"11"
34 votes
Je suppose qu'il a toujours besoin de Javascript WTF pour se sentir heureux.
12 votes
Oh, c'est juste une variante moins wtf-y de
['10', '10', '10'].map(parseInt)
2 votes
Un autre étrange
.map()
comportement : stackoverflow.com/questions/14528397/ En général, il faut être prudent lorsque l'on utilise.map()
avec des fonctions qui prennent plus d'un argument.2 votes
Fais-le.
[0].map(console.log)
0 votes
@Bergi
0 0 > [0]
\n [undefined]` #chrome60.0.3112.113x64 #osx10.12.60 votes
@npst : Ahah. J'ai juste atterri sur cette question parce que c'était une "Hot Network Questions". Je ne recherche pas activement les WTFs de Javascript.
0 votes
Le commentaire de @EricDuminil npst était dirigé vers un autre SOFer qui commentait le comportement occasionnel WTF de Javascript. Le commentateur original a retiré son commentaire et celui de npst est resté. Ce qui me fait rire, c'est que npst a quand même reçu 24 upvotes même hors contexte.
1 votes
@Jacksonkr : Merci pour la réponse. Je pense que cela s'est passé comme suit : J'ai écrit un commentaire, expliquant que voir les WTF de JS me rend heureux de ne pas avoir à utiliser souvent ce langage. Quelqu'un a demandé pourquoi je regardais les questions JS si je n'aime pas la langue. npst a répondu, et les deux premiers commentaires ont été supprimés. C'est drôle que son commentaire soit encore upvoted, oui.