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

简介: [‘1‘, ‘2‘, ‘3‘].map(parseInt)

结果


我们期望输出 [1, 2, 3], 而实际结果是 [1, NaN, NaN].

aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9iZGJiZDU0Zjk2YmE2M2Q3NDVjZmZhMGZmZTM2YzI2OS8yNUY4OEEwRjkyN0M0ODhBQTJBRjFEMEQ5QzQ2MzMyNw.png




测试

我们先做一个demo例子

function testFunc() {
  console.log(...arguments);
  console.log("arguments['0']-->", typeof(arguments['0']), arguments['0']);
  console.log("arguments['1']-->", typeof(arguments['1']), arguments['1']);
  return parseInt(arguments['0'], arguments['1']);
}
let arrTest = ['1','2','3'].map(testFunc);
console.log('arrTest---->', arrTest);



vscode里运行代码run code, 结果如下

aHR0cHM6Ly9ub3RlLnlvdWRhby5jb20veXdzL3B1YmxpYy9yZXNvdXJjZS9iZGJiZDU0Zjk2YmE2M2Q3NDVjZmZhMGZmZTM2YzI2OS84NEI2RjdEQzA0NDA0OEJBQjM2NUFENDFENjI4QzNEMg.png



分析

关于这个问题的描述具体可以参考使用技巧案例:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map



parseInt


我们先来看看parseInt这个函数

参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt



定义:parseInt() 函数可解析一个字符串,并返回一个整数。

1、参数

parseInt(string, radix);


  • string: 必需。要被解析的值。
  • radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
parseInt('123', 5) // 将'123'看作5进制数,返回十进制数38 => 1*5^2 + 2*5^1 + 3*5^0 = 38



当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。


当忽略参数 radix , JavaScript 默认数字的基数如下:


   如果 string 以 “0x” 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。


   如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。


   如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。



2、注意


   只有字符串中的第一个数字会被返回。


   开头和结尾的空格是允许的。


   如果字符串的第一个字符不能被转换为数字,那么 parseInt() 会返回 NaN。


   在字符串以"0"为开始时旧的浏览器默认使用八进制基数。ECMAScript 5,默认的是十进制的基数。



map


定义:map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。


语法:

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


参数:


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

       currentValue:callback 数组中正在处理的当前元素。

       index:可选,callback 数组中正在处理的当前元素的索引。

       array:可选,map 方法调用的数组。

   thisArg:可选,执行 callback 函数时值被用作this。

callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。


querySelectorAll 应用:


如何去遍历用 querySelectorAll 得到的动态对象集合。


var elems = document.querySelectorAll('select option:checked');
var values = Array.prototype.map.call(elems, function(obj) {
  return obj.value;
});





目录
相关文章
|
2月前
parseInt和parseFloat
parseInt和parseFloat
14 0
|
4月前
|
网络协议 算法 Java
记录一道算法题-split和Integer.parseInt()
记录一道算法题-split和Integer.parseInt()
22 0
|
10月前
List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历
List<Map<String, Object>>,Map<String,List<Map<String, Object>>>多方式循环遍历
71 0
|
11月前
|
安全
Map
Map
59 0
|
前端开发
前端学习案例-arr.map(parseInt)没有参数1
前端学习案例-arr.map(parseInt)没有参数1
61 0
前端学习案例-arr.map(parseInt)没有参数1
|
前端开发 索引
复习下 [1,2,3].map(parseInt)
今天继续来聊一个面试题,平时上班太忙的同学可以活动活动脑子。 这个题目只有一行代码,但是知识点不只一个。 当然我们的目的不在于做题,而在于解题的过程。 通过一步一步的分析,得出合理的答案。
81 0
复习下 [1,2,3].map(parseInt)
java86-Interage方法compareto,parseint,intvalue
java86-Interage方法compareto,parseint,intvalue
89 0
java86-Interage方法compareto,parseint,intvalue
|
前端开发 JavaScript 索引
关于面试题:[1, 2, 3].map(parseInt)问题的剖析
最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?!
106 0
|
存储 索引
你真的用对 Array.map() 了吗
你真的用对 Array.map() 了吗
125 0
|
Web App开发 JavaScript 前端开发
面试题:['1', '2', '3'].map(parseInt) 输出什么?
面试题:['1', '2', '3'].map(parseInt) 输出什么?
228 0
面试题:['1', '2', '3'].map(parseInt) 输出什么?