js小题狂练(1)-map+reduce字符串转整型

本文介绍了一种不使用parseInt和Number函数的方法,通过map和reduce将字符串转换为整数。提供了两种实现方式,并附带测试代码确保正确性。

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

from 廖雪峰js教程

想办法把一个字符串13579先变成Array——[1, 3, 5, 7, 9],再利用reduce()就可以写出一个把字符串转换为Number的函数。不要使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数:

// 测试:
if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) {
    if (string2int.toString().indexOf('parseInt') !== -1) {
        console.log('请勿使用parseInt()!');
    } else if (string2int.toString().indexOf('Number') !== -1) {
        console.log('请勿使用Number()!');
    } else {
        console.log('测试通过!');
    }
}
else {
    console.log('测试失败!');
}

法一:比较无耻的觉得没有用number和parseint却用了-0

'use strict'
function string2int(s){
	var arr=[];
	for(var i of s)
		arr.push(i-0);
	return arr.reduce(function(x,y){
		return x*10+y;
	});
}

法二:应该就是作者期待的答案了吧,map+reduce

'use strict'
function string2int(s){
	var arr=s.split("");
	function toInt(zm){
		return +zm;
	}
	var res=arr.map(toInt);//注意不能直接arr.map,他像slice不像splice会改变原数组
	return res.reduce(function(x,y){
		return x*10+y;
	});
}
后来看了下有人写的是var arr=[...s];这个和s.split("")那个在控制台的结果是一样的,神奇的...,活久见.mdn也没查到,希望有大神指点
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值