Javascript adding zeros to the beginning of a string (max length 4 chars)

后端 未结 11 859
轻奢々
轻奢々 2020-12-10 23:58
var number = 1310;

should be left alone.

var number = 120;

should be changed to \"0120\";

var num         


        
11条回答
  •  时光取名叫无心
    2020-12-11 00:21

    An approach I like is to add 10^N to the number, where N is the number of zeros you want. Treat the resultant number as a string and slice off the zeroth digit. Of course, you'll want to be careful if your input number might be larger than your pad length, but it's still much faster than the loop method:

    // You want to pad four places:
    >>> var N = Math.pow(10, 4)
    >>> var number = 1310
    >>> number < N ? ("" + (N + number)).slice(1) : "" + number
    "1310"
    >>> var number = 120
    >>> number < N ? ("" + (N + number)).slice(1) : "" + number
    "0120"
    >>> var number = 10
    >>> number < N ? ("" + (N + number)).slice(1) : "" + number
    "0010"
    …
    

    etc. You can make this into a function easily enough:

    /**
     * Pad a number with leading zeros to "pad" places:
     *
     * @param number: The number to pad
     * @param pad: The maximum number of leading zeros
     */
    function padNumber(number, pad) {
        var N = Math.pow(10, pad);
        return number < N ? ("" + (N + number)).slice(1) : "" + number
    }
    

提交回复
热议问题