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代码
Apr 01 Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 Javascript
JS获取表格内指定单元格html内容的方法
Mar 31 Javascript
AngularJS 单元测试(二)详解
Sep 21 Javascript
AngularJS指令中的绑定策略实例分析
Dec 14 Javascript
基于JavaScript实现熔岩灯效果导航菜单
Jan 04 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 Javascript
vue动态生成dom并且自动绑定事件
Apr 19 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
Vue组件和Route的生命周期实例详解
Feb 10 Javascript
vue如何在自定义组件中使用v-model
May 14 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
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
CL vs ForZe BO5 第四场 2.13
2021/03/10 DOTA
JavaScript高级程序设计 阅读笔记(十四) js继承机制的实现
2012/08/14 Javascript
js调用css属性写法
2013/09/21 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
2013/11/25 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
详解如何使用koa实现socket.io官网的例子
2018/11/04 Javascript
Python Nose框架编写测试用例方法
2017/10/26 Python
详解Python下Flask-ApScheduler快速指南
2018/11/04 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
python 贪心算法的实现
2020/09/18 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
利用HTML5画出一个坦克的形状具体实现代码
2013/06/20 HTML / CSS
Vans英国官方网站:美国南加州的原创极限运动潮牌
2017/01/20 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
大学本科毕业生的自我鉴定
2013/11/26 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
结婚喜宴家长答谢词
2014/01/15 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
就职演讲稿范文
2014/05/19 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
导游词400字
2015/02/13 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
div与span之间的区别与使用介绍
2021/12/06 HTML / CSS