Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 创建类似于电子表格的列索引_Javascript_Arrays_String - Fatal编程技术网

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

Javascript 创建类似于电子表格的列索引,javascript,arrays,string,Javascript,Arrays,String,在Javascript中有没有一种方法可以让我产生一系列的字符串,这些字符串是a-Z,当到达Z时,从AA-ZZ开始,然后转到AAA-AMJ?因为我在想任何事情都不会让我一个接一个地做。在这一点上,我被卡住了,对想法持开放态度。我曾经在php中这样做过一次;也就是说,我需要一个函数,该函数将数字列索引作为输入,并输出excel列名。php文档中有一个聪明的函数,它使用26的幂模来实现。它可以很容易地转换为js: function num2alpha($n) { let $r = '',$i

在Javascript中有没有一种方法可以让我产生一系列的字符串,这些字符串是a-Z,当到达Z时,从AA-ZZ开始,然后转到AAA-AMJ?因为我在想任何事情都不会让我一个接一个地做。在这一点上,我被卡住了,对想法持开放态度。

我曾经在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;
}
所以


生成一次,然后将其放入文本文件中可能?@nathanhayfield这是一个严肃的建议吗?@TomášZato听起来会更快,可以将其视为缓存
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)