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 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
for 循环性能比较 提高for循环的效率
Mar 19 Javascript
js 数据类型转换总结笔记
Jan 17 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
Javascript Event(事件)的传播与冒泡
Jan 23 Javascript
原生JS改变透明度实现轮播效果
Mar 24 Javascript
Vue如何实现响应式系统
Jul 11 Javascript
ES6基础之字符串和函数的拓展详解
Aug 22 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
我的群发邮件程序
2006/10/09 PHP
php分页函数完整实例代码
2014/09/22 PHP
php读取flash文件高宽帧数背景颜色的方法
2015/01/06 PHP
微信API接口大全
2015/04/15 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
百度地图api如何使用
2015/08/03 Javascript
js检测iframe是否加载完成的方法
2015/11/26 Javascript
Node.js Addons翻译(C/C++扩展)
2016/06/12 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
纯js+css实现在线时钟
2020/08/18 Javascript
python读写ini配置文件方法实例分析
2015/06/30 Python
python实现图书管理系统
2018/03/12 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
2018/10/15 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
美国护肤咨询及美容产品电商:Askderm
2017/02/24 全球购物
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
园林设计师自荐信
2013/11/18 职场文书
大学生简短的自我评价
2014/09/12 职场文书
2014年标准化工作总结
2014/12/17 职场文书
财务出纳岗位职责
2015/03/31 职场文书
教你如何用python开发一款数字推盘小游戏
2021/04/14 Python
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
Python first-order-model实现让照片动起来
2022/06/25 Python