前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS高级测试: ['1', '2', '3'].map(parseInt) 的运算结果是多少?

JS高级测试: ['1', '2', '3'].map(parseInt) 的运算结果是多少?

作者头像
舒克
发布2019-09-16 17:51:17
1.5K0
发布2019-09-16 17:51:17
举报

考核内容: es6 数组map() 方法

题发散度: ★★★

试题难度: ★★★

解题思路:

1. map方法概述

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

2. 例子

在字符串中使用map

在一个 String 上使用 map 方法获取字符串中每个字符所对应的 ASCII 码组成的数组:

代码语言:javascript
复制
var map = Array.prototype.map
var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
// a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

易犯错误

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

但这并不意味着 map 只给 callback 传了一个参数(会传递3个参数)。这个思维惯性可能会让我们犯一个很容易犯的错误。

如上题所示效果为

你可能会觉得会输出[1,2,3],实际结果却是上图所示。

参考解析:

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

正常返回数据的方法

答案

代码语言:javascript
复制
 A. [1, NaN, NaN]
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档