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 相关文章推荐
利用JS实现浏览器的title闪烁
Jul 08 Javascript
推荐JavaScript实现继承的最佳方式
Nov 11 Javascript
javascript 中的 delete及delete运算符
Nov 15 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
jquery实现倒计时小应用
Sep 19 jQuery
微信小程序 上传头像的实例详解
Oct 27 Javascript
详谈DOM简介及节点、属性、查找节点的方法
Nov 16 Javascript
JS获取url参数,JS发送json格式的POST请求方法
Mar 29 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
Aug 12 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
如何正确理解vue中的key详解
Nov 02 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中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
初探PHP5
2006/10/09 PHP
PHP 字符串操作入门教程
2006/12/06 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
[22:20]初生之犊-TI4第5名LGD战队纪录片
2014/08/13 DOTA
python从入门到精通(DAY 3)
2015/12/20 Python
python进行TCP端口扫描的实现
2018/12/21 Python
python3实现逐字输出的方法
2019/01/23 Python
Python collections模块使用方法详解
2019/08/28 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
python中的unittest框架实例详解
2021/02/05 Python
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
若干个Java基础面试题
2015/05/19 面试题
大学自荐信
2013/12/12 职场文书
检举信的格式及范文
2014/04/04 职场文书
租房协议书范文
2014/08/20 职场文书
迁户口计划生育证明
2014/10/19 职场文书
高中军训感想
2015/08/07 职场文书