在不使用JavaScript內建的parseInt()函式的前提下,利用map和reduce操作實現一個string2int()函式
阿新 • • 發佈:2018-12-22
在不使用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之中遇到的第一個難題。也用這一篇部落格來熟悉一下如何寫部落格。