2017-09-21 45 views
3

Javascript中有沒有一種方法,我可以想出一系列字符串去A-Z,到達Z時,從AA-ZZ開始,然後到AAA-AMJ?因爲我試圖想到任何不會讓我循環循環的循環來做到這一點。在這一點上,我被卡住並開放了想法。創建類似於電子表格的列索引

+0

生成一次,然後把它放在一個文本文件也許? –

+0

@nathanhayfield這是一個嚴肅的建議嗎? –

+0

@TomášZato聽起來會更快,認爲它是一個緩存 –

回答

2

我不得不在php中這樣做一次;也就是說,我需要一個函數,它將採用數字列索引作爲輸入,並將excel列名稱吐出。有PHP文檔,通過使用的26權力的模可以容易地轉化爲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

用法:

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

所以...

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

or tersely

let columns=[...Array(1024).keys()].map(num2alpha) 
相關問題