2017-09-21 42 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) 
相关问题