在不使用JavaScript内置的parseInt()函数的前提下,利用map和reduce操作实现一个string2int()函数

在不使用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之中遇到的第一个难题。也用这一篇博客来熟悉一下如何写博客。

猜你喜欢

转载自blog.csdn.net/qq_26377547/article/details/85144827