Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

(bit offtopic) but what about:

module.exports = function leftpad (str, len, ch) { return Array(len).join(ch || ' ') + String(str); };



Almost, but the existing code only pads when the str length is less than that of len.


Ahh you are right, all makes sense now, thanks!


You need to go something like:

  module.exports = function leftpad (str, len, ch) { return Array(Math.max(0, len - String(str).length)).join(ch || ' ') + String(str); };
Unfortunately we need to wrap str twice so maybe a one-liner is not quite in place.


The array + join is slower

http://jsperf.com/leftpadtesting

Repeat + slice is too

http://jsperf.com/leftpad


So this I guess

module.exports = function leftpad (str, len, ch) { str = String(str); if (ch === 0) { ch = '0'; } return Array(Math.max(0, len - str.length)).join(ch || ' ') + str; };


Cool, I like the Math.max. Two liner then str = String(str);\n...


And I did not notice the 0 check in the original code either :-D


Also, this doesn't support zero padding with ch=0.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: