共计 963 个字符,预计需要花费 3 分钟才能阅读完成。
作者:ITattoo
今天一直泡在TaobaoUED里面,看见《奇淫技巧和西天取经》一文,觉得受益很多。
现在开始正题:
题目:如何用JavaScript代码实现空位补零?如pad(12,3) ==>012
很多童鞋拿到这个题目,都会这样做:
/* 平淡无奇法 */
function pad(num, n) {
var len = num.toString().length;
while (len < n) {
num = "0" + num;
len++;
}
return num;
}
不少有经验的童鞋就会看出上面的代码也可以用其他的方式实现
/* 质朴长存法 */
function padG(num, n) {
var i = (num + "").length;
while (i++ < n) {
num = "0" + num;
}
return num;
}
有学过递归用法,可能不会考虑while循环
/* 神奇递归法 */
function pad2(num, n) {
if ((num + "").length >= n) return num;
return pad2("0" + num, n);
}
以上一看就不是大牛的写法,对不对?于是乎有能者这样写到
/* 奇淫技巧法 */
function pad3(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
但是呢。上面的代码有BUG,就是当num长度大于n的时候,会出现截断出错的情况,于是我做了一些改进,有更好的想法也欢迎留言提出来
/* 奇淫技巧法改进 */
function pad3G(num, n) {
return (num + "").length <= n ? (Array(n).join(0) + num).slice(-n) : num;
}
正所谓条条大路通罗马,思路不一样,实现的方式也就不一样,
/*奇淫技巧法2*/
function pad5(num, n) {
return Array(n - ("" + num).length + 1).join(0) + num;
}
不少同学肯定会马上拿去,也会发现上面的代码有BUG,就是当num长度大于n很多的时候,会显示不出来,于是我又做了一些改进
/*奇淫技巧法2改进*/
function pad5G(num, n) {
return Array((n - ("" + num).length + 1) >= 0 ? (n - ("" + num).length + 1) : 0).join(0) + num;
}
正文完
发表至: JavaScript
2015-09-18