¿Cómo podría modificarse este para que pudiera incrementar un conjunto de dos letras, para que se viera así:
AA, AB, AC...AZ, BA, BB, BC, etc
Esto se toma prestado de tckmn , pero solo se refiere a una letra.
var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('') function incrementChar(c) { var index = alphabet.indexOf(c) if (index == -1) return -1 // or whatever error value you want return alphabet[index + 1 % alphabet.length] }¡Aprecio tu ayuda!
Solo necesitas dos bucles. Uno para iterar sobre el alfabeto y el segundo para iterar sobre el alfabeto en cada iteración del primer bucle.
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; const arr = []; for (let i = 0; i < alphabet.length; i++) { for (let j = 0; j < alphabet.length; j++) { arr.push(`${alphabet[i]}${alphabet[j]}`); } } console.log(arr);En su situación, ¿qué tal el siguiente script de muestra?
const increase = s => { const idx = [...s].reduce((c, e, i, a) => (c += (e.charCodeAt(0) - 64) * Math.pow(26, a.length - i - 1)), -1); // Ref: https://stackoverflow.com/a/53678158 columnIndexToLetter = (n) => (a = Math.floor(n / 26)) >= 0 ? columnIndexToLetter(a - 1) + String.fromCharCode(65 + (n % 26)) : ""; return columnIndexToLetter(idx + 1); }; const samples = ["A", "Z", "AA", "AZ", "ZZ"]; const res1 = samples.map(e => increase(e)); console.log(res1); // <--- [ 'B', 'AA', 'AB', 'BA', 'AAA' ] // If you want to give one value, please use the following script. const sample = "AA"; const res2 = increase(sample); console.log(res2); // <--- AB["A", "Z", "AA", "AZ", "ZZ"] se convierte en [ 'B', 'AA', 'AB', 'BA', 'AAA' ] .