一個補零小函數

由於最近開發的是桌面混合應用,在開發項目中一直須要導出壓縮包給其餘團隊協做或者給產品看效果。git

爲了導出壓縮包,我專門在gulpfile裏寫了導出命令。每一個導出包都帶了時間後綴以做區分。可是當今天導出包時,發現變成了201631xxxx,不是我理想中的20160301xxxx,因而催生了這個補零函數。今天忽然有了興致,記錄一下這個函數的進化過程。gulp

 

第一時間的想法是這樣的:函數

/**
 * @param {Number} num   原始數字
 * @param {Number} digit 顯示位數, 默認爲2, 即: 8-->08
 */
function addZero(num, digit) {
    var min = Math.pow(10, digit ? (digit - 1) : 1); //知足該位數的最小數,如2位數爲10
    if(num < min) { //若是小於最小數,則補零
        return '0' + num;
    }
    return num + '';
}
addZero(12, 3); //012
addZero(12, 4); //012

此時gulp導出一下,結果很滿意變爲了20160301xxxx。基本思路是細細一想不對,我這邊雖然傳了個digit進去,但根本沒起什麼做用,若是知足條件,不管怎樣都只會加一個零。因而再進行改進。spa

 

其實無需與知足位數的最小數進行對比,只須要比位數。code

/**
 * @param {Number} num   原始數字
 * @param {Number} length 顯示位數, 默認爲2, 即: 8-->08
 * @return {String}
 */
function addZero(num, length) {
    var originLength = (num + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        var zeros = '';
        for(var i = 0; i < relativeLength; i++) {
            zeros += '0';
        }
        return zeros + num;
    }
    return num + '';
}
addZero(12, 4); //0012

這下運行出來很是的ok! 慢着,你敢打小數點進去嗎?blog

addZero(12.6, 4); //12.6

呃,考慮不周,繼續修改:開發

function addZero(num, length) {
    var originLength = (parseInt(num) + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        var zeros = '';
        for(var i = 0; i < relativeLength; i++) {
            zeros += '0';
        }
        return zeros + num;
    }
    return num + '';
}

addZero(12.6, 3); //012.6
addZero(12.6, 4); //0012.6

這下運行出來很是的ok! 但是我當真不喜歡這循環,好吧。繼續。。團隊協作

function addZero(num, length) {
    var originLength = (parseInt(num) + '').length;
    var relativeLength = (length || 2) - originLength;

    if(relativeLength > 0) {
        return (Math.pow(10, relativeLength) + '').substr(1) + num;
    }
    return num + '';
}
addZero(12.6, 3); //012.6

OK了,先這樣吧,下班了~產品

相關文章
相關標籤/搜索