首頁  >  文章  >  web前端  >  JavaScript 空位補零實現程式碼

JavaScript 空位補零實現程式碼

高洛峰
高洛峰原創
2017-01-07 16:25:361345瀏覽

實現一: 

/* 平淡无奇法 */ 
function pad(num, n) { 
var i = (num + "").length; 
while(i++ < n) num = "0" + num; 
return num; 
}

上面的程式碼太平淡無奇,體現不了我的真實水準。於是有了實現二: 

/* 神奇递归法 */ 
function pad2(num, n) { 
if ((num + "").length >= n) return num; 
return pad2("0" + num, n); 
}

神奇的遞歸,每次都能讓 mm 投來讚美和欽慕的眼神~~ 
然而,高手過招,講究的是一招致命。上面的程式碼居然用了兩行,簡直是侮辱。琢磨一下,一行神奇的程式碼湧上心頭: 

/* 奇淫技巧法 */ 
function pad3(num, n) { 
return (Array(n).join(0) + num).slice(-n); 
}

這次mm 投來的是膜拜的眼神了,hiahia~~~ 
=== 我不是空間分隔線,我很長很長的時間分割線。經歷了 n 年後 === 
一日,秋高氣爽,心曠神怡。與友閒坐菩提樹下,把酒下棋。 
友曰:BP 君,自從你走後,可害苦了我。你留下的那些神奇代碼,讓我頭髮提早掉了 3 年。 
我大驚小怪:此話怎會講? 
友一臉不堪回首:記得那個神奇的 pad3 函數不?在你走後 1 年內,公司的業務激增。 pad3 有個 bug, 某些情況下會截取掉數字的前幾位。例如 pad3(123456, 5), 回傳的是 23456. 這 bug 被駭客發現了,導致了好幾起大規模的釣魚事件,公司損失上百萬。當時老總勒令我一天內找出 bug 所在,老兄你的神奇代碼卻害得我花了 3 天才定位到。除了 pad3, 還有一個神奇的 xxoo9 函數,當時… 
老友還在絮絮叨叨,我聽完第一段時,已黯然失魂。低頭琢磨pad3 的寫法,的確存在截取bug, 這用在交易系統,狂汗…… 
與老友話別後,迫不及待地從GoogleFace 的一朵雲中取回當年的pad3 和xxoo9 等代碼,一測試,大驚小怪: 
tricky_code.html 
pad3 不但有截取字元bug, 居然還有效能問題… 
一番激烈的思想鬥爭。 
迷迷茫茫中,遙見唐僧笑侃而至: 
世人皆笑我羅嗦,我道世人看不透。 
欲解此惑看來時,質樸簡單是真知。 
唐僧拋下一捲軸,大笑而去: 

/* 质朴长存法 */ 
function pad(num, n) { 
var len = num.toString().length; 
while(len < n) { 
num = "0" + num; 
len++; 
} 
return num; 
}

觀之,吾亦大笑,隨唐僧取經去也…… 
注:一直想寫這樣一篇文章。今天閒逛 51js, 偶然看到一貼:位數不夠前面補 0 的問題,於是立刻就有了這篇文章的構思。對於補零,我的奇淫反應是return Array(n - ("" + num).length + 1).join(0) + num;(也有bug),和果果的類似,但考慮到震撼性(果果的bug 比較隱密),最後採用了果果的程式碼來舉例。無論如何,感謝果果。

更多JavaScript 空位補零實現代碼相關文章請關注PHP中文網!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn