实现string2Int函数

第一种,使用正则表达式实现。

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);
}

  

 

posted @ 2017-03-02 08:23  牧云人生  阅读(691)  评论(0)    收藏  举报