第一种,使用正则表达式实现。
function string2Int(str){
var num = str.match(/^((\-|\+)?(\d+))/);
if(!num){
return NaN;
}
return +num[0];
}
第二种,使用map方式实现。
function string2Int(str){
var status = true;
var num = '';
Array.prototype.map.call(str, function(v, i){
if(!status){
return;
}
if((i == 0 && (v === '-' || v === '+')) || (Number(v) === Number(v))){
num += v;
}else{
status = false;
return;
}
})
if(num === '-' || num === '+'){
return NaN;
}else{
return Number(num)
}
}
第三种,使用reduce方式实现。
function string2Int(str){
var status = true;
var num = Array.prototype.reduce.call(str, function(total, v, i){
if(!((total === '-' || total === '+') && i === 1)){
if(Number(total) !== Number(total)){
return NaN;
}
}
if(Number(v) === Number(v) && status){
return total + v;
}else{
status = false;
return total;
}
});
return Number(num);
}