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 相关文章推荐
JavaScript延迟加载
Mar 09 Javascript
use jscript Create a SQL Server database
Jun 16 Javascript
Javascript 面向对象 对象(Object)
May 13 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
详解Bootstrap按钮
Jan 04 Javascript
JavaScript cookie详解及简单实例应用
Dec 31 Javascript
layui选项卡效果实现代码
May 19 Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 Javascript
vue中el-upload上传图片到七牛的示例代码
Oct 19 Javascript
微信小程序indexOf的替换方法(推荐)
Jan 14 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
PHP之预定义接口详解
2015/07/29 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
执行iframe中的javascript方法
2008/10/07 Javascript
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
2016/11/26 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
vue v-for 使用问题整理小结
2019/08/04 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
临床医学系毕业生推荐信
2013/11/09 职场文书
质量承诺书怎么写
2014/05/24 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
MySQL视图概念以及相关应用
2022/04/19 MySQL
vue实现登陆页面开发实践
2022/05/30 Vue.js