This should be significantly faster:
var theAlphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O', 'P','Q','R','S','T','U','V','W','X','Y','Z']; var theDigits = ['0','1','2','3','4','5','6','7','8','9']; var result = []; for (var i=0 ; i<26 ; i++) { var prefix1 = theAlphabet[i]; for (var j=0 ; j<26; j++) { var prefix2 = prefix1 + theAlphabet[j]; for(var x = 0; x<10; x++){ var prefix3 = prefix2 + theDigits[x]; for(var y = 0; y<10; y++){ var prefix4 = prefix3 + theDigits[y]; for(var z = 0; z<10; z++){ result.push(prefix4 + theDigits[z]); } } } } }
Key ideas:
- Generate all in one go
- Use partial strings as much as possible
However, I do not see how useful such an exhaustive list is. There are exactly 26 * 26 * 1000 different codes. Therefore, instead of supporting an array with all codes, it makes sense to simply create a function that generates the requested code:
function getCode(number) { var z = number % 10; number -= z; number /= 10; var y = number % 10; number -= y; number /= 10; var x = number % 10; number -= x; number /= 10; var a = number % 26; number -= a; number /= 26; var b = number; return theAlphabet[a] + theAlphabet[b] + theDigits[x] + theDigits[y] + theDigits[z]; }