zoukankan      html  css  js  c++  java
  • ['1', '2', '3'].map(parseInt) what & why ?

    首先我们需要知道.map()和parseInt的具体用法和相关参数:

    .map():

    map定义和方法 
    map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后值。 
    map()方法按照原始数组元素顺序依次处理元素。 
    注意: 
    map不会对空数组进行检测 
    map不会改变原始数组 
    arr.map(function(currentValue,index,arr),thisValue) 
    参数说明 
    function(currentValue,index,arr) 
    必须,函数,数组中的每个元素都会执行这个函数函数参数 
    函数参数 
    currentValue 必须 当前元素值 
    index 可选 当前元素的索引值 
    arr 可选 当前元素属于的数组对象。

    返回由字符串转换得到的整数。

    parseInt:
      parseInt(numString, [radix])

    参数
    numString
    必选项。要转换为数字的字符串。
    radix
    可选项。在 2 和 36 之间的表示 numString 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '0' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
    说明
    parseInt 方法返回与保存在 numString 中的数字值相等的整数。如果 numString 的前缀不能解释为整数,则返回 NaN(而不是数字)。

    parseInt("abc") // 返回 NaN。
    parseInt("12abc") // 返回 12。

    第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是[1, NaN, NaN]。

    • 首先让我们回顾一下,map函数的第一个参数callback:

      var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg])

      这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引。

    • 而parseInt则是用来解析字符串的,使字符串成为指定基数的整数。
      parseInt(string, radix)
      接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。

    • 了解这两个函数后,我们可以模拟一下运行情况

    1. parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
    2. parseInt('2', 1) //基数为1(1进制)表示的数中,最大值小于2,所以无法解析,返回NaN
    3. parseInt('3', 2) //基数为2(2进制)表示的数中,最大值小于3,所以无法解析,返回NaN

      map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]

    综合示例:

    ['10','10','10','10','10'].map(parseInt);
    // [10, NaN, 2, 3, 4]
  • 相关阅读:
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1041:奇偶数判断
    1040:输出绝对值
    1040:输出绝对值
    1040:输出绝对值
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1039:判断数正负
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1039:判断数正负
    信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1039:判断数正负
    Winform应用程序实现通用遮罩层
    SQL WITH子句、分析函数
    SQL WITH子句、分析函数
  • 原文地址:https://www.cnblogs.com/wangtong111/p/11202842.html
Copyright © 2011-2022 走看看