HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptMinor

Zero-padding a number to have six digits

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
sixpaddingnumberdigitszerohave

Problem

This is a switch statement in JavaScript. I have a feeling that it can be done in a shorter way.

switch(n.length){
  case 1:
    n = '00000' + n;
  break;
  case 2:
    n = '0000' + n;
  break;
  case 3:
    n = '000' + n;
  break;
  case 4:
    n = '00' + n;
  break;
  case 5:
    n = '0' + n;
  break;
}

Solution

Well, the value of n is known in each case, so you can just put it in the string:

switch(n) {
  case 1:
    n = '000001';
  break;
  case 2:
    n = '00002';
  break;
  case 3:
    n = '0003';
  break;
  case 4:
    n = '004';
  break;
  case 5:
    n = '05';
  break;
}


If n can only have one of these values, you can use it as index in an array:

n = ['000001','00002','0003','004','05'][n - 1];


Edit:

With the edited code (using n.length in the switch), it would be:

n = ['00000','0000','000','00','0'][n.length - 1] + n;

Code Snippets

switch(n) {
  case 1:
    n = '000001';
  break;
  case 2:
    n = '00002';
  break;
  case 3:
    n = '0003';
  break;
  case 4:
    n = '004';
  break;
  case 5:
    n = '05';
  break;
}
n = ['000001','00002','0003','004','05'][n - 1];
n = ['00000','0000','000','00','0'][n.length - 1] + n;

Context

StackExchange Code Review Q#5831, answer score: 7

Revisions (0)

No revisions yet.