资讯专栏INFORMATION COLUMN

JavaScript中用map()函数把字符串变成整数

沈建明 / 2687人阅读

摘要:在学习的高阶函数时,遇到一个关于函数的问题,在实际操作中,以下代码输出了意想不到的结果结果是。经过查阅的文档,深入了解了函数的作用机制,由于接收的回调函数可以有个参数,通常我们仅需要第一个参数,而忽略了传入的后面两个参数。

在学习JavaScript的高阶函数时,遇到一个关于map()函数的问题,在实际操作中,以下代码输出了意想不到的结果:

"use strict";
var arr = ["1", "2", "3"];
var r;
r = arr.map(parseInt);
alert("[" + r[0] + ", " + r[1] + ", " + r[2] + "]");

结果是[1, NaN, NaN]。
经过查阅Array.prototype.map()的文档,深入了解了map()函数的作用机制,由于map()接收的回调函数可以有3个参数:callback(currentValue, index, array),通常我们仅需要第一个参数,而忽略了传入的后面两个参数。不幸的是,parseInt(string, radix)没有忽略第二个参数,导致实际执行的函数分别是:

parseInt("0", 0); // 0, 按十进制转换

parseInt("1", 1); // NaN, 没有一进制

parseInt("2", 2); // NaN, 按二进制转换不允许出现2

可以改为r = arr.map(Number);,因为Number(value)函数仅接收一个参数;
或者使用如下代码解决parseInt()的转换问题:

var arr = ["1","2","3"];
var r = arr.map(function(val){
    return parseInt(val);
});
console.log(r);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88012.html

相关文章

  • 走近 Python (类比 JS)

    摘要:作为一名前端开发者,也了解中的很多特性借鉴自比如默认参数解构赋值等,同时本文会对的一些用法与进行类比。函数接收一个函数和一个,这个函数的作用是对每个元素进行判断,返回或,根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新。 showImg(https://segmentfault.com/img/remote/1460000011857550); 本文首发在 个人博客 ...

    shadajin 评论0 收藏0
  • [译] JavaScript 性能优化杀手

    摘要:原文引言这篇文档包含了如何避免使代码性能远低于预期的建议尤其是一些会导致牵涉到等无法优化相关函数的问题一些背景在中并没有解释器但却有两个不同的编译器通用编译器和优化编译器这意味着你的代码总是会被编译为机器码后直接运行这样一定很快咯并不是 原文:http://dev.zm1v1.com/2015/08/19/javascript-optimization-killers/引言 这篇文档包...

    MockingBird 评论0 收藏0
  • JavaScript之数组

    摘要:数组的特别之处在于,当使用小于的非负整数作为属性名时数组会自动维护其属性值。返回的数组包含第一个参数指定的位置和所有到但不含第二个参数指定的位置之间的所有数组元素。数组中只需有一项满足给定条件则返回。 概念 JavaScript数组是JavaScript对象的特殊形式。数组索引实际上和碰巧是整数的属性名差不多,使用方括号访问数组元素就像用方括号访问对象的属性一样。JavaScript将...

    coolpail 评论0 收藏0
  • 有趣的 JavaScript 格式转换

    摘要:位无符号整数,长度个字节,溢出处理为最大值。所以你拿到的英文字母编码前后一样的,但是汉字等字符就不同了。为了直接得到汉字的码,使用其实还可以选择使用处理汉字,但是英文又不能正常转换了。 原文链接:https://ssshooter.com/2019-04... 之前做文件上传和 canvas 修图时接触到几个格式,这里打算整理一下他们的关系 Blob 使用 input 获取文件时,你...

    fireflow 评论0 收藏0

发表评论

0条评论

沈建明

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<