美文网首页
parseInt + map

parseInt + map

作者: U17 | 来源:发表于2018-11-02 11:04 被阅读0次

    例题: [1,2,3].map(parseInt)

    先看看 map 和 parseInt 用法

    Array.prototype.map()

    语法

    array.map(callback[, thisArg])

    callback函数的执行规则

    参数:自动传入三个参数

    currentValue(当前被传递的元素);

    index(当前被传递的元素的索引);

    array(调用map方法的数组)

    返回值:对每个传入callback的数组元素进行处理后,返回的值组成一个新的数组。

    callback处理的数组范围:

    只处理有值的索引。没有被赋值、被delete删除的索引不会被处理。

    在处理过程中新增的元素不会被callback处理。

    在处理过程中被删除的元素不会被callback处理。

    在处理过程中被改变的元素,会以callback执行到该元素时的值被处理。

    tips:综合2-4条:在callback第一次调用前,已经确定了被处理数组的最大范围。

    thisArg

    callback函数被调用时,this会指向thisArg参数所传的对象;

    不向thisArg传值、或传的值为null/undefined时,this指向全局对象。

    副作用

    map方法对原数组不产生影响,(除非callback执行时改变了原数组)。

    parseInt()

    语法

    parseInt(string, radix)

    参数string

    要被解析的值。

    该参数可以不是字符串。如果不是字符串,会将其转换为字符串

    字符串开头的可以有空白,空白会被忽略

    参数radix

    转换所采用的基数,2到36之间。

    解析规则

    string参数被看做radix指定进制下的数要把它转换成十进制的整数。

    没有指定基数/基数为0时:

    参数string以“0x”或“0X”开头,radix取16;

    参数string以“0”开头,ECMAScript5规定radix只能取10,然而ECMAScript3允许radix取8。具体的解析结果依然由实现环境而定。

    其他情况下,radix取10.

    基数为1或大于36时:解析结果为NaN。

    基数处于2到36之间时:如果string参数的第一个字符(除空白以外),不属于radix指定进制下的字符,解析结果为NaN;如果第一个字符属于radix指定进制下的字符,则解析到不属于radix指定进制下的字符时,将忽略该字符及其后的所有字符。

    题目分析

    理解了所有背景知识以后,让我们再来看一下这道题:

    ["1", "2", "3"].map(parseInt)

    考察的知识点为:

    1. callback函数自动传入三个参数:currentValue;index;array。

    map方法的callback函数——parseInt方法,在没有指定传入的参数的情况下,将自动接收三个参数。在遍历过程中,parseInt的调用情况如下:

    parseInt("1", 0, ["1", "2", "3"])

    parseInt("2", 1, ["1", "2", "3"])

    parseInt("3", 2, ["1", "2", "3"])

    2. parseInt方法接收两个参数。

    第三个参数["1", "2", "3"]将被忽略。parseInt方法将会通过以下方式被调用

    parseInt("1", 0)

    parseInt("2", 1)

    parseInt("3", 2)

    3. parseInt的第二个参数radix为0时,ECMAScript5将string作为十进制数字的字符串解析;

    parseInt的第二个参数radix为1时,解析结果为NaN;

    parseInt的第二个参数radix在2—36之间时,如果string参数的第一个字符(除空白以外),不属于radix指定进制下的字符,解析结果为NaN。

    parseInt("3", 2)执行时,由于"3"不属于二进制字符,解析结果为NaN。

    综上,["1", "2", "3"].map(parse)的返回结果为[1, NaN, NaN]。

    相关文章

      网友评论

          本文标题:parseInt + map

          本文链接:https://www.haomeiwen.com/subject/thmqxqtx.html