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
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
module.exports = function leftpad (str, len, ch) { return Array(len).join(ch || ' ') + String(str); };