Usando la consola de Chrome, esta es mi entrada y salida:
[0].map(Array);
[[0, 0, [0]]]; // output
¿Que está sucediendo aquí?
EDITAR
La razón por la que esto me da curiosidad es porque algo como
[0].map(String);
Volverá
["0"];
Y no
["0", "0", "String"]
javascript
Jacksonkr
fuente
fuente

['10', '10', '10'].map(parseInt).map()comportamiento extraño : stackoverflow.com/questions/14528397/… En general, debes tener cuidado al usar.map()funciones que toman más de un argumento.[0].map(console.log)Respuestas:
La
.map()función llama a laArray()función con tres argumentos, el valor del elemento de la matriz que es0, el índice de ese elemento, también0, y una referencia a toda la matriz.Entonces es como hacer esto:
La matriz devuelta por
Array()entonces se convierte en el primer elemento de la matriz que.map()crea, de ahí el nivel adicional de anidación en su[[0, 0, [0]]]resultado.EDITAR con respecto a su edición: cuando dice
[0].map(String);que resulta enString()ser llamado con los mismos tres argumentos comoString(a[index], index, a), pero laString()función ignora todos menos el primer argumento, mientras queArray()usa todos los argumentos proporcionados.fuente
En primer lugar ,
Arraypodría usarse como una función para crear matrices:En segundo lugar ,
mappasa tres parámetros a su devolución de llamada: el elemento, su índice de la matriz y la propia matriz.Entonces , dado que su matriz contiene un elemento, la línea:
es equivalente a:
fuente
Después de actualizar la pregunta. Otras respuestas le brindan información sobre el mapa
Para responder por qué la matriz y la cadena difieren en los constructores
El constructor de cadenas acepta 1 parámetro String (cosa) mientras que la matriz nueva Array (elemento0, elemento1 [, ... [, elementoN]])
fuente
.map(Number)convierte cada artículo en un número en lugar de devolver algo como[3, 2, [4, 1, 3]]para cada artículo.Esta llamada
le da el mismo resultado que si escribiera algo como esto:
La función de mapa llama a la función Array con tres parámetros: valor del elemento, índice del elemento y matriz completa. Esta llamada a
Arraydevuelve su matriz con 3 elementos: valor (número0), índice (número0), matriz completa ([0]).Y esta nueva matriz está envuelta en la matriz original, porque asignó el elemento original (número
0) al nuevo elemento (matriz de 3 elementos)Nota: Es posible que esté acostumbrado a usar solo el primer parámetro como en
o usando solo dos para obtener también el índice
Pero debe recordar que
mapaún proporciona 3 parámetros, simplemente ignórelos en su función de devolución de llamada. Esa también es la razón por la que un código como:devoluciones
Es porque la función String se preocupa solo por el primer parámetro e ignora otros parámetros pasados. Si llamas
todavía obtendrás
fuente