['1', '2', '3'].map(parseInt) 输出答案和解析

根据题目可以了解到这道题主要考我们的是对map函数和parseInt函数的熟悉程序,所以我们先来了解这两个函数

map

根据MDN上对于map的解释:map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

上面的话读起来可能比较晦涩,我个人理解其实就是遍历数组,对数组的每一项进行遍历并做数据处理。这道题的关注重点就是在于map对于数组处理的方法,所以我们着重看下在MDN对于map参数的解释:

  • callback
    生成新数组的元素的函数,使用三个参数:

    • currentValue
      callback数组中正在处理的当前元素
    • index |可选
      callback 数组中正在处理的当前元素的索引。
    • array |可选
      map 方法调用的数组。
      ***
      这样的解释就很明白了,map方法的参数是一个回调函数,这个函数会有三个参数:当前元素、当前元素的下标和当前数组。所以这道题可以转换成一下写法:
      parseInt('1',0,['1','2','3'])
      parseInt('2',1,['1','2','3'])
      parseInt('3',2,['1','2','3'])

    parseInt

    MDN上对于parseInt的解释非常清晰,parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。第一个参数大家都知道,我们着重看下第二个参数,第二个参数标识进制,默认是10进制的,如果第一个字符不能被转换成数字,parseInt返回NaN。

  • 另外关于在基数为 undefined,或者基数为 0 或者没有指定的情况下,JavaScript 作如下处理:
    • 如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制).
    • 如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。
    • 如果字符串 string 以其它任何值开头,则基数是10 (十进制)。

所以我们可以得到上面的代码精简并输出是

    parseInt('1',0)   // 10进制  输出1
    parseInt('2',1)   // 1进制   输出NaN
    parseInt('3',2)  // 2进制  输出NaN
  • 所以这道题我们得到答案是 [1, NaN, NaN]

['1', '2', '3'].map(parseInt) 输出答案和解析

原文地址:https://www.cnblogs.com/lideyao/p/12024285.html

时间: 2024-08-10 01:31:56

['1', '2', '3'].map(parseInt) 输出答案和解析的相关文章

解惑 ["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]

javascript中的parseInt与map函数都是常用的函数,可是 ["1", "2", "3"].map(parseInt) 为何返回不是[1,2,3]却是[1,NaN,NaN]? 这涉及到是否深入理解两个函数的格式与参数含义. 首先根据我对两个函数用法的了解,猜测是由于parseInt(string, radix) 的参数radix必须介于2~36之间,而且字符串string中的数字不能大于radix才能正确返回数字结果值. 我们通过以

["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]

转载自:http://blog.csdn.net/freshlover/article/details/19034079 这涉及到是否深入理解两个函数的格式与参数含义. 首先根据我对两个函数用法的了解,猜测是由于parseInt(string, radix) 的参数radix(进制)必须介于2~36之间,而且字符串string中的每个位上的数字不能大于radix才能正确返回数字结果值. 我们通过以下javascript代码测试一下: var a=["1", "2",

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

["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两个参数,map传递的是3个参数. map函数定义: arr.map(callback[,thisArg]); callback函数需要以下3个值: currentValue:当前处理数值 index:处理的数值的索引值 array:map函数处理的函数值 thisArg可选.  callback函数里的thi

由["1", "2", "3"].map(parseInt) 引发的问题

基础知识 map语法 map(callback, [thisArg]) map 参数 callback 生成新数组元素的函数,callback参数,使用三个参数 currentValue callback 数组中正在处理的当前元素 index [可选] callback 数组中正在处理的当前元素的索引 array [可选] callback  map 方法被调用的数组 thisArg [可选] 执行 callback 函数时使用的this 值 返回值 一个新数组,每个元素都是回调函数的结果 pa

关于面试题:[1, 2, 3].map(parseInt)问题的剖析

一.前言 最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴.先把答案给了各位,和你理解的一样吗?! [1, 2, 3].map(parseInt) // [1, NaN, NaN] 如果你答案你都明白,请出门左转:React源码/原理了解一下. 二.剖析 这道面试题,本身并不复杂.不能正确回答问题的小伙伴,大多数集中于对parseInt这个函数的不了解或者了解的不全面,下面就由胡哥为大家抽丝剥茧一一讲述. 1. map函数 map()方法创建一个新数

Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数。

/** 题目:Help Tomisu UVA - 11440 链接:https://vjudge.net/problem/UVA-11440 题意:给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数. 思路: lrjP338 由于x的所有素因子都>M:那么x与M!互质. 根据最大公约数的性质,对于x>y,x与y互质,那么x%y与y也互质. 由于N

[&#39;1&#39;,&#39;2&#39;,&#39;3&#39;].map(parseInt) 返回的是什么?

返回的是:[1,NaN,NaN] 首先我们先分析一下  parseInt  函数: parseInt()函数解析一个字符串参数,并返回指定基数的整数(数学系统中的基数). 它可以有两个参数,用法:parseInt(string, radix) string:要解析的值.如果其不是字符串,则将其转换为字符串(使用toString抽象操作).字符串开头的空白符将会被忽略. radix:可选.表示要解析的数字的基数.该值介于 2 ~ 36 之间,默认为10 返回值:返回解析后的整数值. 如果被解析参数

[&quot;1&quot;, &quot;2&quot;, &quot;3&quot;].map(parseInt) 结果

// 下面的语句返回什么呢: ["1", "2", "3"].map(parseInt); // 你可能觉的会是[1, 2, 3] // 但实际的结果是 [1, NaN, NaN] // 通常使用parseInt时,只需要传递一个参数. // 但实际上,parseInt可以有两个参数.第二个参数是进制数. // 可以通过语句"alert(parseInt.length)===2"来验证. // map方法在调用callback

list,set,map,数组之间的相互转换详细解析

1.list转setSet set = new HashSet(new ArrayList()); 2.set转listList list = new ArrayList(new HashSet()); 3.数组转为listList stooges = Arrays.asList("Larry", "Moe", "Curly");或者String[] arr = {"1", "2"};List list =