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 相关文章推荐
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
Javascript实现滚动图片新闻的实例代码
Nov 27 Javascript
jquery遍历checkbox介绍
Feb 21 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
Bootstrap所支持的表单控件实例详解
May 16 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
Oct 24 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
Vue.js组件间的循环引用方法示例
Dec 27 Javascript
node.js使用免费的阿里云ip查询获取ip所在地【推荐】
Sep 03 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
微信小程序新手教程之页面打开数量限制
Mar 03 Javascript
vue实现弹幕功能
Oct 25 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/06/02 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
jQuery自定义组件(导入组件)
2016/11/08 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
菊花转动的jquery加载动画效果
2018/08/19 jQuery
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
详细介绍Python语言中的按位运算符
2013/11/26 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
centos6.8安装python3.7无法import _ssl的解决方法
2018/09/17 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python 创建一维的0向量实例
2019/12/02 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
教师个人自我剖析材料
2014/09/29 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
北大自主招生自荐信
2015/03/04 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript