['1','2','3'].map(parseInt) Explicación detallada

Una pregunta inicial de la entrevista ['1', '2', '3'].map(parseInt), el resultado [1, NaN, NaN], muchas personas no entienden, permítanme explicar lo siguiente

Primero, echemos un vistazo a la función de mapa

El método map (Array) (JavaScript)
invoca la función de devolución de llamada definida en cada elemento de la matriz y devuelve una matriz que contiene los resultados.
array1.map(function(a,b,c){ a es cada elemento de la matriz, es decir, '1''2''3' b es el subíndice de la matriz, es decir, 0 1 2 c es la matriz original, es decir, array1 }) como sigue ejemplo:




var arr = ['1','2','3'];
  function fn(num,a,c){
    
    
    console.log(num,a,c);  
    //num       a           c
    //1         0      ["1", "2", "3"]
    //2         1      ["1", "2", "3"]
    //3         2      ["1", "2", "3"]
    return num;
  }
  // console.log(arr.map(fn));

De lo anterior se puede ver que si el mapa contiene una función, sus parámetros se pasarán a la función

Parámetro predeterminado: cuando no se especifican parámetros de entrada para el mapa, se utilizarán todos los parámetros.

['1','2','3'].map(function(){
    
    
    console.log(arguments);   //arguments中包括全部三个参数
})

inserte la descripción de la imagen aquí

parseInt(cadena, raíz)

Cadena de descripción del parámetro
Obligatorio. La cadena que se va a analizar.
radix es opcional. Indica la base del número a analizar. El valor está entre 2 ~ 36.
Si este parámetro se omite o tiene un valor de 0, el número se analizará en base 10. Si comienza con "0x" o "0X", será base 16.
Si el argumento es menor que 2 o mayor que 36, parseInt() devolverá NaN. (de MDN)

console.log(['1','2','3'].map(parseInt));  //[1, NaN, NaN]
// 等同于
['1','2','3'].map((item,index)=>{
    
    
    return parseInt(item,index)
})

parseInt('1', 0) -> 1 base es 0, parseInt() analizará según el sistema decimal, por lo que el resultado es 1; parseInt(' 2', 1) -> base es 1
, fuera de rango, por lo que el resultado es NaN;
parseInt('3', 2) -> NaN base es 2, analizado en sistema binario, debe comenzar con 0 y 1, por lo que el resultado es NaN.

Resumir:

['1','2','3'].map(parseInt) La salida es una matriz, los elementos dentro son 1, NaN, NaN respectivamente. La función de map es recorrer cada elemento en la matriz y realizar la operación de la primera función de map() en cada elemento, aquí es realizar una conversión digital y el resultado devuelto es una nueva matriz. Cuando no se especifica el número de parámetros pasados ​​por la función en el mapa, el valor predeterminado es pasar tantos parámetros como se puedan pasar. parseInt puede recibir hasta dos parámetros, por lo que el mapa pasa los primeros dos parámetros (valor actual, índice valor) a parseInt, seguido de ejemplos Es decir, parseInt('1',0) devuelve 0, parseInt('2',1) devuelve NaN, porque el segundo parámetro debe ser un número entre 2 y 36, parseInt('3 ',2) Lo que se devuelve es NaN, porque el número binario no incluye el número 3, por lo que se obtendrá el resultado de 1, NaN, NaN.

Supongo que te gusta

Origin blog.csdn.net/qq_51441159/article/details/128091025
Recomendado
Clasificación