M M*_*ler 9 javascript counter numbers count
这可能是一个不寻常的请求,但对于我的脚本,我需要一个按字母而不是数字递增的函数.例如:
这是一个数字示例:
var i = 0;
while(condition){
window.write('We are at '+i);
++i;
}
Run Code Online (Sandbox Code Playgroud)
从本质上讲,我想用字母来计算,比如Microsoft Excel,而不是数字.所以不是打印"我们在0","我们在1","我们在2"等,我需要打印"我们在A","我们在B","我们在C"等
为了模仿Excel(我能想到的唯一例子),在达到索引25(Z)后,我们可以转到'AA','AB','AC'等.
所以它会像这样工作:
var i = 0;
while(condition){
window.write('We are at '+toLetter(i));
++i;
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以写一个函数然后将一个字母转换回一个数字,即toNumber('A')= 0或toNumber('DC')= 107(我认为),那就更好了.
谢谢!
Dag*_*bit 25
这是一个简单的递归函数,用于将数字转换为字母.
它是一个基础,所以1是A,26是Z,27是AA.
function toLetters(num) {
"use strict";
var mod = num % 26,
pow = num / 26 | 0,
out = mod ? String.fromCharCode(64 + mod) : (--pow, 'Z');
return pow ? toLetters(pow) + out : out;
}
Run Code Online (Sandbox Code Playgroud)
这是一个匹配函数,用于将字符串转换回数字:
function fromLetters(str) {
"use strict";
var out = 0, len = str.length, pos = len;
while (--pos > -1) {
out += (str.charCodeAt(pos) - 64) * Math.pow(26, len - 1 - pos);
}
return out;
}
Run Code Online (Sandbox Code Playgroud)
创建一个字母数组 A、B、C、D 等。然后使用 array[0] 调用 A,因为 0 是 A 的索引,您可以使用 array[i] 作为索引,只需验证,这样 i 就不能25岁以上。
使用以下任一方法创建数组:
var alphabet = new Array("A","B","C");
var alphabet = new Array(25);
alphabet[0] = "A";
alphabet[1] = "B";
alphabet[2] = "C";
Run Code Online (Sandbox Code Playgroud)
而不是toLetter(i);
使用alphabet[i];