JavaScript map+parseInt 容易产生的误区
2024-10-09 11:50:39
map
/**
* 语法:
* var new_array = arr.map(function callback(currentValue[,index[,array]]){
* // return element for new_array
* }[,thisArg])
*/
- callback: 生成新数组元素的函数,3个参数
- 1-currentValue, callback数组中正在处理的当前元素
- 2-index(可选): callback数组中正在处理的当前元素的索引
- 3-array(可选): map方法调用的数组
- thisArg: 可选-执行callback函数时值被作用做this
简单示例
var numbers = [1, 4, 9]
var double = numbers.map(x => x * 2)
console.info(double)
- 通常情况下,map 方法中的 callback 函数只需要接受一个参数,就是正在被遍历的数组元素本身。
- 但这并不意味着 map 只给 callback 传了一个参数。这个思维惯性可能会让我们犯一个很容易犯的错误。
parseInt in map
const newIntArray = ["1", "2", "3"].map(parseInt)
console.info(newIntArray) // [ 1, NaN, NaN ]
- parseInt 经常被带着一个参数使用, 但是这里接受两个:
- 第一个参数是一个是表达式,第二个是callback function
- .map传递3个, element,index,array
- 第3个参数array被忽视了,但index没有被忽略
解析过程
- parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。
- 格式为: parseInt(string,radix) -> map(parseInt(value,index))
- step 0: parseInt("1",0) // 1 <= //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1
- step 1: parseInt("2",1) // NaN
- step 2: parseInt("3",2) // NaN
解决办法: 使用箭头函数
const newIntArrayWithNumber = ["1.2", "2.3", "3.4"].map(num => parseInt(num, 10))
console.info(newIntArrayWithNumber) // [ 1, 2, 3 ]
最新文章
- Activity详解四 activity四种加载模式
- 5. 网络配置与FTP服务笔记
- 树莓派 config.txt
- Floyd算法(三)之 Java详解
- SQL Server - 把星期一(周一)当作每个星期的开始在一年中求取周数
- [JavaEE]Java NIO原理图文分析及代码实现
- ASP.NET MVC使用Bootstrap系列(3)——使用Bootstrap 组件
- NHibernate系列文章十七:NHibernate Session管理(附程序下载)
- Writing On-Error Trigger In Oracle Forms
- jsonObject jsonArray jsonTokener jsonStringer,json解析以及http请求获取josn数据并加以解析
- 微信小程序、应用号、订阅号、服务号、企业号小总结
- js String Trim函数
- 前端性能优化:使用Data URI代替图片SRC
- BZOJ 4551[Tjoi2016&;Heoi2016]树(树链剖分+二分)
- 调研pwa和sw
- bootstrap: 内联表单;
- Visual C++.NET设计
- vue的v-for数组和对象
- Struts2中使用HttpServletRequest和HttpServletResponse
- 打包spring项目遇到的坑 Unable to locate Spring NamespaceHandler for XML schema ……shcema/context 产生的原因及解决方法