JavaScript 空位补零实现代码


Posted in Javascript onFebruary 26, 2010

实现一:

/* 平淡无奇法 */ 
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 相关文章推荐
使用jquery局部刷新(jquery.load)从数据库取出数据
Jan 22 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
全面理解闭包机制
Jul 11 Javascript
Javascript typeof与instanceof的区别
Oct 18 Javascript
Bootstrap源码解读表单(2)
Dec 22 Javascript
浅谈react性能优化的方法
Sep 05 Javascript
JavaScript模板引擎应用场景及实现原理详解
Dec 14 Javascript
傻瓜式vuex语法糖kiss-vuex整理
Dec 21 Javascript
Vue动态路由缓存不相互影响的解决办法
Feb 19 Javascript
js中async函数结合promise的小案例浅析
Apr 14 Javascript
JS Math对象与Math方法实例小结
Jul 05 Javascript
javascript replace()正则替换实现代码
Feb 26 #Javascript
javascript function调用时的参数检测常用办法
Feb 26 #Javascript
jquery1.4 教程二 ajax方法的改进
Feb 25 #Javascript
jquery 1.4.2发布!主要是性能与API
Feb 25 #Javascript
jQuery 方法大全方便学习参考
Feb 25 #Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 #Javascript
javascript 命名规则 变量命名规则
Feb 25 #Javascript
You might like
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
php array的学习笔记
2012/05/10 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP实现的多维数组排序算法分析
2018/02/10 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
完善的jquery处理机制
2016/02/21 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
TensorFlow实现创建分类器
2018/02/06 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
Opencv+Python识别PCB板图片的步骤
2021/01/07 Python
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
英国森林假期:Forest Holidays
2021/01/01 全球购物
毕业生文员求职信
2013/11/03 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
小学生新年寄语
2014/04/03 职场文书
初中生评语大全
2014/04/24 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
放牛班的春天观后感
2015/06/01 职场文书
2016春季幼儿园大班开学寄语
2015/12/03 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
logback如何自定义日志存储
2021/08/30 Java/Android