本练习来自廖雪峰 JS 教程. 答案自写.
函数功能描述如下: 把一个字符串 13579 先变成 Array--[1, 3, 5, 7, 9], 再利用 reduce() 就可以写出一个把字符串转换为 Number 的函数.
函数代码如下:
- 'use strict';
- function string2int(s) { var arr = []; // 将字符串转化为数组, 但此方法得到的数组的每一个元素仍是字符串 for(var i = 0; i < s.length; ++i) { arr[i] = s[i]; } // 定义一个新的数组用以接收上一个数组转化得到的每一个元素是整数的数组 var new_arr = []; new_arr = arr.map(function(elem) { return +elem; // '+'可以将任何非数字转化为数字 }); // 将数组转化为连贯的整数 return new_arr.reduce(function(x,y) { return x * 10 + y; }); }
测试代码如下:
- // 测试:
- 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('测试失败!');
- }
经测试, 符合要求.
来源: http://www.bubuko.com/infodetail-2757229.html