2017-09-21 1 views
3

Y a-t-il un moyen en Javascript, que je puisse créer une série de chaînes de A à Z, et en passant par Z, recommencer avec AA-ZZ, puis passer à AAA-AMJ? Parce que j'essaie de penser à tout ce qui ne me permettrait pas de boucler des boucles sur des boucles pour le faire. Et je suis coincé et ouvert aux idées à ce stade.Création d'un index de colonnes similaire aux tableurs

+0

générer une fois et ensuite le mettre dans un fichier texte peut-être? –

+0

@nathanhayfield Est-ce une suggestion sérieuse? –

+0

@ TomášZato sonne comme si ce serait plus rapide, pensez-y comme un cache –

Répondre

2

Je devais le faire une fois en php; c'est-à-dire que j'avais besoin d'une fonction qui prendrait un index de colonne numérique en entrée et cracherait le nom de la colonne Excel. Il y a une fonction intelligente dans la documentation php qu'il fait en utilisant modulo des pouvoirs de 26. Il peut être facilement converti en js:

function num2alpha($n) { 
    let $r = '',$i , $n; 
    for ($i = 1; $n >= 0 && $i < 10; $i++) { 
     $r = String.fromCharCode(65 + ($n % Math.pow(26, $i)/Math.pow(26, $i - 1))) + $r; 
     $n -= Math.pow(26, $i); 
    } 
    return $r; 
} 

Original Source

Utilisation:

num2alpha(0); //A 
num2alpha(27); //AB 
num2alpha(1023); //AMJ 

si ...

let columns=[]; 
for(let i=0; i<=1023; i++) { 
    columns.push(num2alpha(i)); 
} 
//["A","B","C",..."AA","AB",..."AMJ"] 

ou plus laconiquement

let columns=[...Array(1024).keys()].map(num2alpha)