您的位置:首页 > Web前端 > JavaScript

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

2018-02-15 00:20 429 查看
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也没查到,希望有大神指点
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: