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
3
A
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;
}
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)
générer une fois et ensuite le mettre dans un fichier texte peut-être? –
@nathanhayfield Est-ce une suggestion sérieuse? –
@ TomášZato sonne comme si ce serait plus rapide, pensez-y comme un cache –