[‘1‘, ‘2‘, ‘3‘].map(parseInt) what & why ?

1. 基础函数

  • Map 函数:map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
var array1 = [1,4,9,16];
const map1 = array1.map(x => x *2);
console.log(map1);

输出结果:

Array [2,8,18,32]

如下我们看一下map 函数的完整定义:

  /**
     * Calls a defined callback function on each element of an array, and returns an array that contains the results.
     * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
     * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
     */
map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];

回调函数的第一个参数是当前值,第二个参数是当前值的序号,第三个参数是当前数组。

function myparse(frist, second, third) {
    console.log(frist);
    console.log(second);
    console.log(third);
    return 1;
}

console.log(['1', '2', '3'].map(myparse));

结果如下:
[‘1‘, ‘2‘, ‘3‘].map(parseInt) what & why ?

  • parseint 函数: parseInt() 函数可解析一个字符串,并返回一个整数。
    函数定义如下:
/**
 * Converts a string to an integer.
 * @param s A string to convert into a number.
 * @param radix A value between 2 and 36 that specifies the base of the number in numString.
 * If this argument is not supplied, strings with a prefix of '0x' are considered hexadecimal.
 * All other strings are considered decimal.
 */
declare function parseInt(s: string, radix?: number): number;

函数的第一个参数接收一个字符串值,第二个参数可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。

如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

2. 试题解析

由上面对于两函数的解析我们可以清楚看出该题的答案为:

[‘1‘, ‘2‘, ‘3‘].map(parseInt) what & why ?
map 函数产生三次调用,分别为:
parseInt(‘1’,0) 基数值为 0 按照十进制进行解析,所以值为 1
parseInt(‘2’,1) 基数值小于 2 ,所以值为 NaN
parseInt(‘3’,2) 基数值为2 ,字符串值不在有效的值域空间,所以值为NaN

上一篇:centos7 扩容分区


下一篇:Week2 —— Server Virtualization