JavaScript利用高阶函数Map/Reduce进行字符串转整型数遇到的问题

文章讨论了在使用JavaScript的Map函数将字符串数组转换为整型数组时遇到的问题,错误在于parseInt函数需要的基数参数。解决方案是通过箭头函数明确指定仅使用元素值。其他易错点包括return语句的遗漏、字符转数字的技巧和嵌套函数的返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript利用高阶函数Map/Reduce进行字符串转整型数遇到的问题

JavaScript高阶函数Map/Reduce学习记录1

题目来源

高阶函数Map/Reduce

题目内容

1、题目要求:利用map()把字符串变成整数,代码如下:
2、示例代码测试结果:1,NaN,NaN
3、请找出错误原因并且改正

'use strict';
var arr = ['1', '2', '3'];
var r;
r = arr.map(parseInt);
console.log(r);

错误分析

参考该帖下网友答案:
首先来看一下,Map函数与parseInt函数的参数说明:

parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。(进制信息)
直接在 map() 方法使用,这边的 radix 进制会引用到数组的索引。
map()只要一个参数,即函数对象本身;但是map传递的参数有三个,分别是:element、index,array。

示例代码不成功的原因:
每次送入parseInt()的有3个元素:element, index和array。parseInt本身是有2个参数的:string和radix,所以element和index纳入了函数运算,array被抛弃了。

['1', '2', '3'].map(paresInt)  
//相当于
['1', '2', '3'].map(paresInt(value, index))

逐一分析:
第一次:parseInt(1, 0):0 会调用默认 10 进制,因此返回 1。
第二次:parseInt(2, 1):radix 为 1,不在范围内,错误返回 NaN。
第三次:parseInt(3, 2):radix 为 2,在范围内,二进制范围是 0-1超过范围,错误返回 NaN。

参考答案

修改是通过明确定义只有一个元素用于函数计算(element)。

'use strict';

var arr = ['1', '2', '3'];
var r;
r = arr.map(c=>parseInt(c));
console.log(r);

其他总结

1、评论区答案中的 "=>"是什么意思?

> Array.map(x=>x*1):
> /* 相当于先定义function foo(x){
> return x*1;
> }
> 再调用 Array.map(foo); */
> //x*1:是利用纯数字字符与数字相乘,结果为数字的特性,把单个字符转为数字。

本节易错点

1、关于return语句后面;的遗漏。尤其是在return后跟函数括号比较复杂的时候,注意检查。
2、在本知识点的其他示例练习题目中,有用到利用纯数字字符与数字相乘,结果为数字的特性,把单个字符转为数字。第一次作答没有注意到这一点,类型不同没有通过测试。
3、多层嵌套的函数时,一定要注意函数需要有return返回值。在使用Map函数的时候特别要注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值