javascript数字补零
2009-09-08 23:39 BlueDream 阅读(4059) 评论(0) 编辑 收藏 举报昨天闲逛51js发现这个有趣的帖子.后来发现lifesinger,月影.Amingoo都讨论了一番.所以自己也总结下.
自己当时给出的解决方法是:
但不管从效率还是稳定性.最后肯定了所谓的"质朴长存法".其实这也说明了,解决问题不要忽略最基本的方法:
这些细节,其实写程序需要养成这种良好的习惯.当然其实方法很多.就不一一列出了.主要是为了告诉解决问题的不同思维.
更好的分析和讨论见:
http://bbs.51js.com/viewthread.php?tid=85137&pid=595796&page=2&extra=#pid595796 51js
http://lifesinger.org/blog/2009/08/the-harm-of-tricky-code/ lifesinger
自己当时给出的解决方法是:
function pad(num, n) {
return (new Array(n >(''+num).length ? (n - (''+num).length+1) : 0).join('0') + num);
}
alert(pad(12202, 2));
运用了Array(n+1).join()倍增的效率优越性.return (new Array(n >(''+num).length ? (n - (''+num).length+1) : 0).join('0') + num);
}
alert(pad(12202, 2));
但不管从效率还是稳定性.最后肯定了所谓的"质朴长存法".其实这也说明了,解决问题不要忽略最基本的方法:
function pad(num, n) {
var len = num.toString().length;
while(len < n) {
num = '0' + num;
len++;
}
return num;
}
alert(pad(102,4))
最后针对上文的第一个方法.周爱民给出了一个效率上细节的一个提升:
var len = num.toString().length;
while(len < n) {
num = '0' + num;
len++;
}
return num;
}
alert(pad(102,4))
<script type="text/javascript">
var pad = function(tbl) {
return function(num, n){
return (0 >= (n - ''+num.length)) ? num : (tbl[n] || (tbl[n] = Array(n + 1).join(0)))+num;
}
}([]);
alert(pad(233, 6));
</script>
这段代码,与第一段代码相比.就是通过闭包返回个数组.如果不需要补零就只要调用缓存里的tbl[len]了.就用空间换取了时间.var pad = function(tbl) {
return function(num, n){
return (0 >= (n - ''+num.length)) ? num : (tbl[n] || (tbl[n] = Array(n + 1).join(0)))+num;
}
}([]);
alert(pad(233, 6));
</script>
这些细节,其实写程序需要养成这种良好的习惯.当然其实方法很多.就不一一列出了.主要是为了告诉解决问题的不同思维.
更好的分析和讨论见:
http://bbs.51js.com/viewthread.php?tid=85137&pid=595796&page=2&extra=#pid595796 51js
http://lifesinger.org/blog/2009/08/the-harm-of-tricky-code/ lifesinger