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获取指定日期周数以及星期几的小例子
Jun 27 Javascript
利用Angularjs实现幻灯片效果
Sep 07 Javascript
详解vue2.0组件通信各种情况总结与实例分析
Mar 22 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
Jul 09 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
详解JSON和JSONP劫持以及解决方法
Mar 08 Javascript
js实现窗口全屏示例详解
Sep 17 Javascript
vue组件创建的三种方式小结
Feb 03 Javascript
Vue性能优化的方法
Jul 30 Javascript
antd design table更改某行数据的样式操作
Oct 31 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对称加密算法示例
2014/05/07 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
往光标所在位置插入值的js代码
2013/09/22 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
Scala解析Json字符串的实例详解
2017/10/11 Javascript
Vue2.0中集成UEditor富文本编辑器的方法
2018/03/03 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
vue实现微信分享功能
2018/11/28 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
python+opencv实现动态物体识别
2018/01/09 Python
程序员写Python时的5个坏习惯,你有几条?
2018/11/26 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
Jacadi Paris美国官方网站:法国童装品牌
2017/10/15 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
电子专业毕业生自荐信
2014/05/25 职场文书
委托书格式
2014/08/01 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
mysql主从复制的实现步骤
2021/10/24 MySQL
Java详细解析==和equals的区别
2022/04/07 Java/Android
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis