首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Js map 函数

Js map 函数

作者头像
上山打老虎了
发布于 2022-06-14 18:13:49
发布于 2022-06-14 18:13:49
11.5K0
举报
文章被收录于专栏:ArticleArticle
代码语言:javascript
复制
[[1, 2], [3, 4]].map(([a, b]) => a + b);

我在阮一峰老师的ES6里看到这个 map 就想起了之前看到的一个面试题。

代码语言:javascript
复制
["1", "2", "3"].map(parseInt); //[1,NaN,NaN]

这个 map 函数的功能是啥都不知道,很尴尬…

map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

通常情况下,map 方法中的 callback 函数只需要接受一个参数(很多时候,自定义的函数形参只有一个),就是正在被遍历的数组元素本身。

但这并不意味着 map 只给 callback 传了一个参数(会传递3个参数)。

通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句”alert(parseInt.length)===2″来验证. map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身. 第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN.

代码语言:javascript
复制
["1", "2", "3"].map(function(){
    console.log(arguments.length) //3
});

["1", "2", "3"].map(function(){
 console.log(arguments[1]) //0 1 2 索引值
})

理解完毕,完美~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年04月04日,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档