Left zero pad (v2)

Revision 2 of this benchmark created on


Description

Belonging to this question on StackOverflow.

Setup

var numsToPad = [
      [1, 100],
      [-123, 4],
      [5.619, 7],
      [1234567890, 2]
    ];

Test runner

Ready to run.

Testing in
TestOps/sec
Peter Bailey's
function f(n, w) {
  w -= n.toString().length;
  if (w > 0) return new Array(w + (/\./.test(n) ? 2 : 1)).join('0') + n;
  return str = n + "";
}
f(numsToPad[0][0], numsToPad[0][1]);
f(numsToPad[1][0], numsToPad[1][1]);
f(numsToPad[2][0], numsToPad[2][1]);
f(numsToPad[3][0], numsToPad[3][1]);
ready
profitehlolz's
function f(n, w) {
  pad = n.toString();
  while (pad.length < w) pad = "0" + pad;
  return (pad + n).slice(-pad.length);
}
f(numsToPad[0][0], numsToPad[0][1]);
f(numsToPad[1][0], numsToPad[1][1]);
f(numsToPad[2][0], numsToPad[2][1]);
f(numsToPad[3][0], numsToPad[3][1]);
ready
coderjoe's
function f(n, w) {
  var n_ = Math.abs(n);
  var zeros = Math.max(0, w - Math.floor(n_).toString().length);
  var zeroString = Math.pow(10, zeros).toString().substr(1);
  if (n < 0) {
    zeroString = '-' + zeroString;
  }

  return zeroString + n;
}
f(numsToPad[0][0], numsToPad[0][1]);
f(numsToPad[1][0], numsToPad[1][1]);
f(numsToPad[2][0], numsToPad[2][1]);
f(numsToPad[3][0], numsToPad[3][1]);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.