在不使用JavaScript内置的parseInt()函数的前提下,利用map和reduce操作实现一个string2int()函数
题目出自廖雪峰老师的JavaScript教程:
把一个字符串13579先变成Array——[1, 3, 5, 7, 9],再利用reduce()就可以写出一个把字符串转换为Number的函数:
'use strict';
function string2int(s) {
var strArr,intArr,number;//定义一个字符数组、一个整型数组和转换后得到的结果
//_2String函数将字符串用分隔开
function _2String(s) {
var str=s.split('');
return str;
};
//_2Int函数将字符串转换为整数
function _2Int(strArr) {
//_toInt函数将字符数组转换为整型数组
function _toInt(strArr) {
return +strArr;
};
var arr=strArr.map(_toInt);
return arr;
};
//_2number函数将整型数组还原为整数
function _2number(intArr) {
var num=intArr.reduce(function (x,y) {
return x*10+y;
});
return num;
};
strArr=_2String(s);
intArr=_2Int(strArr);
number=_2number(intArr);
console.log(intArr);
return number;
}
我们用下面的代码来测试一下:
// 以下代码用于测试:
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('测试失败!');
}
运行结果:
0
1,2,3,4,5
1,2,3,0,0
测试通过!
这是我写的第一篇博客,记录一下自己在学习JavaScript之中遇到的第一个难题。也用这一篇博客来熟悉一下如何写博客。