JavaScript 空位補零實現(xiàn)代碼
更新時間:2010年02月26日 14:15:23 作者:
JavaScript代碼實現(xiàn)空位補零
實現(xiàn)一:
/* 平淡無奇法 */
function pad(num, n) {
var i = (num + "").length;
while(i++ < n) num = "0" + num;
return num;
}
上面的代碼太平淡無奇,體現(xiàn)不了我的真實水平。于是有了實現(xiàn)二:
/* 神奇遞歸法 */
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~~~
=== 我不是空間分隔線,我是很長很長的時間分割線。經(jīng)歷了 n 年后 ===
一日,秋高氣爽,心曠神怡。與友閑坐菩提樹下,把酒下棋。
友曰:BP 君,自從你走后,可害苦了我。你留下的那些神奇代碼,害我頭發(fā)提前掉了 3 年。
我大驚:此話怎講?
友一臉不堪回首:記得那個神奇的 pad3 函數(shù)不?在你走后 1 年內,公司的業(yè)務激增。pad3 有個 bug, 某些情況下會截取掉數(shù)字的前幾位。比如 pad3(123456, 5), 返回的是 23456. 這 bug 被黑客發(fā)現(xiàn)了,導致了好幾起大規(guī)模的釣魚事件,公司損失上百萬。當時老總勒令我一天內找出 bug 所在,老兄你的神奇代碼卻害得我花了 3 天才定位到。除了 pad3, 還有一個神奇的 xxoo9 函數(shù),當時……
老友還在絮絮叨叨,我聽完第一段時,已黯然失魂。低頭琢磨 pad3 的寫法,的確存在截取 bug, 這用在交易系統(tǒng),狂汗……
與老友話別后,迫不及待地從 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;
}
觀之,吾亦大笑,隨唐僧取經(jīng)去也……
注:一直想寫這樣一篇文章。今天閑逛 51js, 偶然看到一貼:位數(shù)不夠前面補 0 的問題,于是立刻就有了這篇文章的構思。對于補零,我的奇淫反應是return Array(n - ("" + num).length + 1).join(0) + num;(也有 bug),和果果的類似,但考慮到震撼性(果果的 bug 更隱蔽),最后采用了果果的代碼來舉例。無論如何,感謝果果。
復制代碼 代碼如下:
/* 平淡無奇法 */
function pad(num, n) {
var i = (num + "").length;
while(i++ < n) num = "0" + num;
return num;
}
上面的代碼太平淡無奇,體現(xiàn)不了我的真實水平。于是有了實現(xiàn)二:
復制代碼 代碼如下:
/* 神奇遞歸法 */
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~~~
=== 我不是空間分隔線,我是很長很長的時間分割線。經(jīng)歷了 n 年后 ===
一日,秋高氣爽,心曠神怡。與友閑坐菩提樹下,把酒下棋。
友曰:BP 君,自從你走后,可害苦了我。你留下的那些神奇代碼,害我頭發(fā)提前掉了 3 年。
我大驚:此話怎講?
友一臉不堪回首:記得那個神奇的 pad3 函數(shù)不?在你走后 1 年內,公司的業(yè)務激增。pad3 有個 bug, 某些情況下會截取掉數(shù)字的前幾位。比如 pad3(123456, 5), 返回的是 23456. 這 bug 被黑客發(fā)現(xiàn)了,導致了好幾起大規(guī)模的釣魚事件,公司損失上百萬。當時老總勒令我一天內找出 bug 所在,老兄你的神奇代碼卻害得我花了 3 天才定位到。除了 pad3, 還有一個神奇的 xxoo9 函數(shù),當時……
老友還在絮絮叨叨,我聽完第一段時,已黯然失魂。低頭琢磨 pad3 的寫法,的確存在截取 bug, 這用在交易系統(tǒng),狂汗……
與老友話別后,迫不及待地從 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;
}
觀之,吾亦大笑,隨唐僧取經(jīng)去也……
注:一直想寫這樣一篇文章。今天閑逛 51js, 偶然看到一貼:位數(shù)不夠前面補 0 的問題,于是立刻就有了這篇文章的構思。對于補零,我的奇淫反應是return Array(n - ("" + num).length + 1).join(0) + num;(也有 bug),和果果的類似,但考慮到震撼性(果果的 bug 更隱蔽),最后采用了果果的代碼來舉例。無論如何,感謝果果。
相關文章
javascript與PHP動態(tài)往類中添加方法對比
這篇文章主要介紹了JAVASCRIPT與PHP動態(tài)往類中添加方法對比的相關資料,需要的朋友可以參考下2018-03-03Elasticsearch實現(xiàn)復合查詢高亮結果功能
這篇文章主要介紹了Elasticsearch實現(xiàn)復合查詢,高亮結果功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09前端js實現(xiàn)文件的斷點續(xù)傳 后端PHP文件接收
這篇文章主要為大家詳細介紹了斷點續(xù)傳的簡單例子,前端文件提交,后端PHP文件接收,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10手寫的一個兼容各種瀏覽器的javascript getStyle函數(shù)(獲取元素的樣式)
這篇文章主要介紹了手寫的一個兼容各種瀏覽器的javascript getStyle函數(shù),用來取元素的樣式,需要的朋友可以參考下2014-06-06TypeScript 中的 .d.ts 文件詳解(加強類型支持提升開發(fā)效率)
.d.ts 文件在 TypeScript 開發(fā)中扮演著非常重要的角色,它們讓我們能夠享受到 TypeScript 強大的類型系統(tǒng)帶來的優(yōu)勢,提高代碼質量和開發(fā)效率,接下來,我們將深入探討如何為 JavaScript 庫和自定義模塊創(chuàng)建 .d.ts 文件,以及一些最佳實踐和注意事項,一起看看吧2023-09-09使用clipboard.js實現(xiàn)復制功能的示例代碼
本篇文章主要介紹了使用clipboard.js實現(xiàn)復制功能的示例代碼,詳細介紹了clipboard.js插件的使用,有興趣的可以了解一下2017-10-10關于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
下面小編就為大家?guī)硪黄P于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06