Left zero pad (v9)

Revision 9 of this benchmark created on


Description

Belonging to this question on StackOverflow.

Setup

var numsToPad=[[1,100],[-123,4],[5.619,7],[1234567890,2]];
    
    function bailey(n,w){
      w-=n.toString().length;
      if(w>0)return new Array(w+(/\./.test(n)?2:1)).join('0')+n;
      return str=n+"";
    }
    
    function p(n,w){
      var pad=new Array(1+w).join('0');
      return (pad+n).slice(-pad.length);
    }
    
    function joe(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;
    }
    
    function lpad(input, character, length) {
            if (typeof(input) == "undefined") return '';
            if (typeof(length) == "undefined") length = 0;
            if (typeof(character) == "undefined") character = ' ';
            var padString = Array(length - input.length + 1).join(character);
            return padString + input;
    };

Test runner

Ready to run.

Testing in
TestOps/sec
Peter Bailey's
bailey(numsToPad[0][0],numsToPad[0][1]);
bailey(numsToPad[1][0],numsToPad[1][1]);
bailey(numsToPad[2][0],numsToPad[2][1]);
bailey(numsToPad[3][0],numsToPad[3][1]);
ready
profitehlolz's
p(numsToPad[0][0],numsToPad[0][1]);
p(numsToPad[1][0],numsToPad[1][1]);
p(numsToPad[2][0],numsToPad[2][1]);
p(numsToPad[3][0],numsToPad[3][1]);
ready
coderjoe's
joe(numsToPad[0][0],numsToPad[0][1]);
joe(numsToPad[1][0],numsToPad[1][1]);
joe(numsToPad[2][0],numsToPad[2][1]);
joe(numsToPad[3][0],numsToPad[3][1]);
ready
lpad
lpad(numsToPad[0][0],'0',numsToPad[0][1]);
lpad(numsToPad[1][0],'0',numsToPad[1][1]);
lpad(numsToPad[2][0],'0',numsToPad[2][1]);
lpad(numsToPad[3][0],'0',numsToPad[3][1]);
ready

Revisions

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