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 相关文章推荐
P3P Header解决Cookie跨域的问题
Mar 12 Javascript
jquery隔行换色效果实现方法
Jan 15 Javascript
jQuery横向擦除焦点图特效代码分享
Sep 06 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
Jun 12 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
代码实例ajax实现点击加载更多数据图片
Oct 12 Javascript
vue图片上传本地预览组件使用详解
Feb 20 Javascript
webpack 如何解析代码模块路径的实现
Sep 04 Javascript
微信小程序实现点赞业务
Feb 10 Javascript
详解Node.js如何处理ES6模块
May 15 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设计模式之调解者模式的深入解析
2013/06/13 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
一个用js实现控制台控件的代码
2007/09/04 Javascript
input 高级限制级用法
2009/03/26 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
Python 常用 PEP8 编码规范详解
2017/01/22 Python
python中map()函数的使用方法示例
2017/09/29 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
分分钟入门python语言
2018/03/20 Python
python使用thrift教程的方法示例
2019/03/21 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
岳父生日宴会答谢词
2014/01/13 职场文书
电子专业毕业生自我鉴定
2014/01/22 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
授权委托书格式
2014/07/31 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
教师师德师风个人整改方案
2014/09/18 职场文书
2014乡镇干部对照检查材料思想汇报
2014/09/26 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书