我是JavaScript新手。这是我的任务
我想生成一个以'A'开头并以递增方式编号的序列号。 示例:A000001,A000002,...,A000010等。 我想根据输入的当前年份生成此序列号。 范例: 如果当前年份是2020,则A000001,A000002,...,A000010等 如果当前年份为2021,则B000001,B000002,...,B000010等 如果当前年份为2046,则应类似于AA000001,AA000002,...,AA000010等。因为有26个字母,所以应该从AA开始。 2047年-AB,2048年-AC等使用相同的方法。
function colName(n) {
var ordA = 'A'.charCodeAt(0);
var ordZ = 'Z'.charCodeAt(0);
var len = ordZ - ordA + 1;
var year = 2020;
var s = "";
while(n >= 0) {
s = String.fromCharCode(n % len + ordA) + s;
n = Math.floor(n / len) - 1;
}
return s;
}
在这里,我有一个代码,它将以A,B,C,.... Z,AA的方式生成字母。但是,当我调用函数colName(n)时,应将'n'的值从0开始,以'A'开头。我想把这个值作为我的当前年份。如果我给n值2020,那么它应该显示'A'。
我被困在这里,却不了解如何执行此操作以及如何为此添加增量编号。 Here I am giving an image of my concept
谢谢。
答案 0 :(得分:0)
您需要在2020之前减去n,以使其为起点(将其视为偏移量)。 同样,由于2020 = A,所以2027将是H而不是AA,并且从那里开始的26个字符将是Z。
function colName(n) {
var ordA = 'A'.charCodeAt(0);
var ordZ = 'Z'.charCodeAt(0);
var len = ordZ - ordA + 1;
n -= 2020;
var s = "";
while(n >= 0) {
s = String.fromCharCode(n % len + ordA) + s;
n = Math.floor(n / len) - 1;
}
return s;
}
document.write(colName(2020));