JavaScript map+parseInt 容易产生的误区
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 ]
JavaScript map+parseInt 容易产生的误区的更多相关文章
- JavaScript:['1','2','3'].map(parseInt)问题解析
最近碰到了['1','2','3'].map(parseInt)这种看似不起眼陷阱却极大的问题. 这乍一看,感觉应该会输出[1,2,3].但是,实际上并不是我们想的这样.你可以现在打开console, ...
- JavaScript - map和parseInt的坑
问题: var arrs = ['1', '2', '3']; var r = arrs.map(parseInt); alert(r);//1,NaN,NaN map arr.map(functio ...
- JavaScript Array.map + parseInt
map 生成新数组的函数,3个参数 1-currentValue, callback数组中正在处理的当前元素 2-index(可选): callback数组中正在处理的当前元素的索引 3-array( ...
- ["1", "2", "3"].map(parseInt)?
["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两 ...
- 通过 ['1', '2', '3'].map(parseInt) 学习 map 和 parseInt 函数
看到一道笔试题: ['1', '2', '3'].map(parseInt) 这道题目中涉及到 map 和 parseInt 函数的运用,如果对这两个函数的理解不充分的话,是很难思考出正确的结果的. ...
- 解惑 ["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]
javascript中的parseInt与map函数都是常用的函数,可是 ["1", "2", "3"].map(parseInt) 为何返 ...
- ["1", "2", "3"].map(parseInt) 为何返回[1,NaN,NaN]
转载自:http://blog.csdn.net/freshlover/article/details/19034079 这涉及到是否深入理解两个函数的格式与参数含义. 首先根据我对两个函数用法的了解 ...
- 为什么 ["1", "2", "3"].map(parseInt) 返回 [1,NaN,NaN]?
在 javascript 中 ["1","2","3"].map(parseInt) ,2,3] 却是 [1,NaN,NaN]? 我们首先回 ...
- ['1', '2', '3'].map(parseInt) what & why ?
这是今天在 Advanced-Frontend组织 看到一个比较有意思的题目.主要是讲JS的映射与解析早在 2013年, 加里·伯恩哈德就在微博上发布了以下代码段: ['10','10','10',' ...
随机推荐
- 小白从零开始阿里云部署react项目+node服务接口(三:部署到服务器)
服务器 准备工具 依次安装即可 nginx 安装nginx https://www.runoob.com/linux/nginx-install-setup.html 配置全局nginx命令 http ...
- Ethical Hacking - GAINING ACCESS(17)
CLIENT SIDE ATTACKS - Backdooring exe' s Download an executable file first. VEIL - FRAMEWORK A backd ...
- MySQL数据库---库的操作
MySQL数据库中,以库,表,记录的形式管理所有的数据,安装MySQL数据库的服务器上可以包含多个库,一个库中包含多张表,一张表中包含多条记录.库对应的是文件系统中文件夹的概念,表对应的是文件的概念, ...
- 最简单的VScode Python 开发环境配置以及中文化
前置条件 Python 3.X(2020年了,建议使用Python3.X版本) 一.下载VSCode VSCode官方下载链接 由于安装过程是中文界面,此处略过. 二.VSCode中文化 不需要配置什 ...
- 洛谷p1120小木棍(剪枝优化)
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- Spring集成Quartz定时任务
1.导入jar包 2.配置applicationContext.xml文件 <!-- 任务调度1 --> <!-- bean id="simpleJob" cla ...
- 443端口被占用无法启动解决办法(如何查找进程ID)
摘自CSDN博客,原文地址:http://blog.csdn.net/pet8766/article/details/8186955 netstat -ano|findstr "443&qu ...
- JAVA实现BP神经网络算法
工作中需要预测一个过程的时间,就想到了使用BP神经网络来进行预测. 简介 BP神经网络(Back Propagation Neural Network)是一种基于BP算法的人工神经网络,其使用BP算法 ...
- JavaScript高级程序设计(第三版) 7/25
第七章 函数表达式 1.定义函数的方式有两种,一种是函数声明,一种是函数表达式. //函数声明 function fuc (a){ } //函数表达式 var fuc = function(a){ } ...
- The Google File System(论文阅读笔记)
概述 GFS:一个可扩展的分布式文件系统,用于大型分布式数据相关应用,TB级的数据,成千上万的并发请求. 设计概览 假设 组件的失效比异常更加常见 多数的文件修改操作是追加数据而不是重写原来的数据 ...