幾天前,我正在使用JavaScript構建倒數計時器,所以我須要格式化秒和毫秒,我但願秒始終是2位數的長度,而毫秒老是3位數的長度,換句話說,我但願 1
秒顯示爲 01
,1
毫秒顯示爲 001
。javascript
我最終寫出了本身的函數來「填充」這些數字,可是我發現JavaScript中內置了函數 padStart() 和 padEnd()來實現這些功能。在本文中,咱們來看一下如何在JavaScript中利用這些內置函數!前端
讓咱們從介紹幾種不一樣的填充用例開始。java
假設你在同一行上有標籤和值,例如 name:zhangsan
和 Phone Number:(555)-555-1234
。若是把他們放在一塊兒看起來會有點奇怪,會是這樣:函數
Name: zhangsan Phone Number: (555)-555-1234
你可能想要這個。spa
Name: zhangsan Phone Number: (555)555-1234
或這個...code
Name: zhangsan Phone Number: (555)555-1234
在中國,顯示價格時一般顯示兩位數的角、分。因此代替這個...orm
¥10.1
你會想要這個。視頻
¥10.01
對於日期,日期和月份都須要2位數字。因此代替這個...blog
2020-5-4
你會想要這個。ip
2020-05-04
與上面的日期相似,對於計時器,你須要2位數字表示秒,3位數字表示毫秒。因此代替這個...
1:1
你會想要這個。
01:001
讓咱們從 padStart()
以及標籤和值示例開始。假設咱們但願標籤彼此正確對齊,以使值在同一位置開始。
Name: zhangsan Phone Number: (555)555-1234
因爲 Phone Number
是兩個標籤中較長的一個,所以咱們要在 Name
標籤的開頭加上空格。爲了未來的須要,咱們不要把它專門填充到電話號碼的長度,咱們把它填充到長一點,好比說20個字符。這樣一來,若是你在將來使用較長的標籤,這一招仍然有效。
在填充以前,這是用於顯示此信息的入門代碼。
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log(label1 + ": " + name); console.log(label2 + ": " + phoneNumber); //Name: zhangsan //Phone Number: (555)-555-1234
如今,讓咱們填充第一個標籤。要調用 padStart()
,你須要傳遞兩個參數:一個用於填充字符串的目標長度,另外一個用於你但願填充的字符。在這種狀況下,咱們但願長度爲20,而填充字符爲空格。
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log(label1.padStart(20, " ") + ": " + name); console.log(label2 + ": " + phoneNumber); // Name: zhangsan ////Phone Number: (555)-555-1234
如今填充第二行。
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log(label1.padStart(20, " ") + ": " + name); console.log(label2.padStart(20, " ") + ": " + phoneNumber); // Name: zhangsan //// Phone Number: (555)-555-1234
對於相同的標籤和值示例,讓咱們更改填充標籤的方式。讓咱們將標籤向左對齊,以便在末尾添加填充。
初始代碼
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log(label1 + ": " + name); console.log(label2 + ": " + phoneNumber); //Name: zhangsan //Phone Number: (555)-555-1234
如今,讓咱們填充第一個標籤,與咱們以前所作的相似,但有兩個小區別。如今,咱們使用 padEnd()
而不是padStart()
,而且須要在填充以前將冒號與標籤鏈接起來,這樣咱們就能確保冒號在正確的位置。
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log((label1 + ': ').padEnd(20, ' ') + name); console.log(label2 + ": " + phoneNumber); //Name: zhangsan //Phone Number: (555)-555-1234
如今兩行都已填充。
const label1 = "Name"; const label2 = "Phone Number"; const name = "zhangsan" const phoneNumber = "(555)-555-1234"; console.log((label1 + ': ').padEnd(20, ' ') + name); console.log((label2 + ': ').padEnd(20, ' ') + phoneNumber); //Name: zhangsan //Phone Number: (555)-555-1234
padding函數是專門針對字符串而不是數字的,因此,咱們須要先將數字轉換爲字符串。
讓咱們看一下顯示價格的初始代碼。
const rmb = 10; const cents = 1; console.log("¥" + rmb + "." + cents); //¥10.1
要填充分,咱們須要先將其轉換爲字符串,而後調用 padStart()
函數,指定長度爲1且填充字符爲'0';
const rmb = 10; const cents = 1; console.log("¥" + rmb + "." + cents.toString().padStart(2,0)); //¥10.01
這是顯示日期的初始代碼。
const month = 2; const year = 2020; console.log(year + "-" + month); //2020-2
如今,讓咱們填充月份以確保它是兩位數。
const month = 2; const year = 2020; console.log(year + "-" + month.toString().padStart(2,"0")); // 2020-02
最後是咱們的計時器,咱們要格式化兩個不一樣的數字,即秒和毫秒。儘管有相同的原則。這是初始代碼。
const seconds = 1; const ms = 1; console.log(seconds + ":" + ms); //1:1
如今要填充,我將在單獨的行上進行填充,以便於閱讀。
const seconds = 1; const formattedSeconds = seconds.toString().padStart(2,0); const ms = 1; const formattedMs = ms.toString().padStart(3,0); console.log(formattedSeconds + ":" + formattedMs); // 01:001
雖然編寫本身的padding函數並不難,但既然已經內置在JavaScript中,爲何還要本身去作呢?有不少有趣的函數已經內置了。在你本身構建一些東西以前,可能值得先快速搜索一下。
本文首發於公衆號《前端外文精選》,關注後私信回覆:大禮包,送某網精品視頻課程網盤資料,準能爲你節省很多錢!