【问题标题】:Creating Column index similar to spreadsheets创建类似于电子表格的列索引
【发布时间】:2017-09-21 00:33:24
【问题描述】:

在 Javascript 中有没有一种方法,我可以想出一系列从 A-Z 排列的字符串,当到达 Z 时,从 AA-ZZ 开始,然后到 AAA-AMJ?因为我试图想到任何不会让我在循环上循环来做的事情。在这一点上,我被困住并愿意接受想法。

【问题讨论】:

  • 生成一次,然后将其放入文本文件中?
  • @nathanhayfield 这是一个严肃的建议吗?
  • @TomášZato 听起来会更快,将其视为缓存

标签: javascript arrays string


【解决方案1】:

我必须在 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)

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多