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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: [‘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;
});





目录
相关文章
|
JavaScript 前端开发
[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]
[阿里巴巴最新面试题----JavaScript中map(parseInt)的问题]
64 0
|
前端开发 索引
复习下 [1,2,3].map(parseInt)
今天继续来聊一个面试题,平时上班太忙的同学可以活动活动脑子。 这个题目只有一行代码,但是知识点不只一个。 当然我们的目的不在于做题,而在于解题的过程。 通过一步一步的分析,得出合理的答案。
100 0
复习下 [1,2,3].map(parseInt)
|
前端开发 索引
|
JavaScript
Node.js面试题:map(parseInt)
Node.js面试题:map(parseInt)
133 0
|
Web App开发 JavaScript 前端开发
面试题:['1', '2', '3'].map(parseInt) 输出什么?
面试题:['1', '2', '3'].map(parseInt) 输出什么?
268 0
面试题:['1', '2', '3'].map(parseInt) 输出什么?
|
前端开发 JavaScript 索引
关于面试题:[1, 2, 3].map(parseInt)问题的剖析
最近有小伙伴在公号中咨询了胡哥这道面试题,窃以为是比较有意思的一道面试题,于此分享给各位小伙伴。先把答案给了各位,和你理解的一样吗?!
129 0
|
JavaScript
Node.js面试题:map(parseInt)
Node.js面试题:map(parseInt)
143 0
|
3月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
3月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用