JavaScript中的補(bǔ)白函數(shù)

hello 大家好,我是一只前端小白,大佬請(qǐng)留言指導(dǎo)。

今天看書看到j(luò)s中將數(shù)字轉(zhuǎn)換為字符串的地方,突然想起一件事,當(dāng)本小白還是超級(jí)小白的時(shí)候,做過(guò)一個(gè)時(shí)間顯示的小案例,當(dāng)時(shí)對(duì)于數(shù)字補(bǔ)白感覺特別詭異,就想,這種東西怎么做啊,上網(wǎng)百度一下看看js中是不是提供了補(bǔ)白的函數(shù),結(jié)果并沒有找到,當(dāng)時(shí)我的做法特別傻逼

h<10?'0'+h:h;

就類似這樣子寫的,時(shí)分秒都是這樣子,艾瑪,當(dāng)時(shí)都不知道自己封裝個(gè)函數(shù)。
有個(gè)小建議,就是我們平時(shí)練習(xí)或者學(xué)習(xí)時(shí)候,可以自己做個(gè)js文件,將一些實(shí)用的小功能直接封裝到里面。

言歸正傳。

ES7中方法

現(xiàn)在我來(lái)介紹一下JavaScript中的補(bǔ)白方法,js之前雖然沒有提供這樣的方法,但是在ES7中新增的補(bǔ)白的函數(shù)padStart(n,tar) padEnd(n,tar),我們先來(lái)體驗(yàn)一把:

var res = '1'.padStart(2,'0');
console.log(res);

結(jié)果

注意:這兩個(gè)方法都是字符串新增的API,不能直接用Number類型補(bǔ)白1.padStart(2,'0'),這樣是錯(cuò)的

這先介紹一下padStart:根據(jù)名字我們就可以知道這是在字符串最前面開始補(bǔ)白,它有兩個(gè)參數(shù)n,tar(這兩個(gè)參數(shù)名字自己亂起的啊,大家可以根據(jù)自己喜好隨便叫)

  • n表示我們的預(yù)期有幾位,比如我們上方的例子,我們的預(yù)期是2位,所以會(huì)把1變?yōu)?1
  • tar表示我們將使用什么目標(biāo)來(lái)進(jìn)行補(bǔ)白,比如以上的例子,我們使用的是字符'0'來(lái)進(jìn)行補(bǔ)白,當(dāng)然你可以使用別的值來(lái)補(bǔ)白。

padEndpadStart的使用方法是一樣的,唯一的區(qū)別就是,它是在結(jié)尾進(jìn)行補(bǔ)白的。

自己的方法

當(dāng)然,有些人擔(dān)心瀏覽器對(duì)ES6之后的新特性支持不好,(不過(guò)目前我電腦的chrome,firefox,Edge,以及QQ瀏覽器都可以直接支持),我還提供一個(gè)自己自己的補(bǔ)白函數(shù),因?yàn)閿?shù)字的補(bǔ)白比較常用所以我就專門是為數(shù)字提供的補(bǔ)白

/**
 * [mypad 我的補(bǔ)白函數(shù)]
 * @param  {[mixed]}  num  [我們補(bǔ)白的目標(biāo)數(shù)字,可以使number和string類型]
 * @param  {[number]}  n    [預(yù)期位數(shù)]
 * @param  {Boolean} flag [是否在開頭補(bǔ)白]
 * @return {[mixed]}       [true|string 如果傳入不是數(shù)字返回false否則返回補(bǔ)白后的結(jié)果]
 */
function mypad(num,n,flag=true){
    // 判斷是否為數(shù)字
    if(typeof Number(num) != 'number'){
        return false;
    }
    // 將數(shù)字轉(zhuǎn)為字符串
    num = num.toString();
    var len = num.length;
    // 如果flag為false則進(jìn)行結(jié)尾補(bǔ)白
    if(!flag){
        if(len>n)
            return num;
        for(var i = 0; i < n-len;i++){
            num = num + '0';
        }
        return num;
    }
    // 一般情況進(jìn)行開頭補(bǔ)白
    if(len>n)
        return num;
    for(var i = 0; i < n-len;i++){
        num = '0' + num;
    }
    return num;
}

var num = 123;
console.log(mypad(num,5));
console.log(mypad(num,5,false));
結(jié)果

目前來(lái)講,鑒于瀏覽器與新版本ES的支持性,我們自己做個(gè)補(bǔ)白函數(shù)還是有必要的。
當(dāng)然,可以有很多種思路去實(shí)現(xiàn)補(bǔ)白函數(shù),本小白提供一種比較簡(jiǎn)單的。當(dāng)然,不一定補(bǔ)白的就是0,大家可以改改,比如把它變?yōu)橐粋€(gè)參數(shù)傳進(jìn)來(lái),根據(jù)自己的想打隨便改。

希望大家多多支持,我是前端小白king,希望一起成長(zhǎng),向大神陣營(yíng)邁進(jìn),最后一舉成功,男的迎娶貌美程序媛,女的嫁給帥氣程序猿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、實(shí)驗(yàn)?zāi)康?學(xué)習(xí)使用 weka 中的常用分類器,完成數(shù)據(jù)分類任務(wù)。 二、實(shí)驗(yàn)內(nèi)容 了解 weka 中 explo...
    yigoh閱讀 8,867評(píng)論 5 4
  • 關(guān)于譯者:這是一個(gè)流淌著滬江血液的純粹工程:認(rèn)真,是 HTML 最堅(jiān)實(shí)的梁柱;分享,是 CSS 里最閃耀的一瞥;...
    iKcamp閱讀 1,591評(píng)論 0 2
  • 腦海中的畫面并不清晰,只記得我和朋友曉雯匆忙走在路上,趕著去上課。拐角處突然看到了熟悉的身影,走近一看,竟然是許久...
    這里楓菲閱讀 381評(píng)論 2 5
  • 以終為始,是從依賴期到獨(dú)立期的第二個(gè)習(xí)慣,是把基于心智的第一次創(chuàng)造的那個(gè)“終”,作為基于實(shí)際的第二次創(chuàng)造的那個(gè)“始...
    Smile_Zhangjie閱讀 254評(píng)論 0 1
  • _BK_閱讀 572評(píng)論 14 13

友情鏈接更多精彩內(nèi)容