创建类似于电子表格的列索引

时间:2017-09-21 00:33:24

标签: javascript arrays string

Javascript中是否有一种方法,我可以想出一系列A-Z的字符串,当到达Z时,从AA-ZZ开始,然后再到AAA-AMJ?因为我试图想到任何不会让我循环遍历循环来做它的事情。而且我现在仍然坚持不懈地提出想法。

1 个答案:

答案 0 :(得分: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"]

或更简洁

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