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也没查到,希望有大神指点
本文介绍了一种不使用parseInt和Number函数的方法,通过map和reduce将字符串转换为整数。提供了两种实现方式,并附带测试代码确保正确性。
645





