Увеличение алфавита от заданного c ввода - PullRequest
1 голос
/ 14 февраля 2020

Я новичок в JavaScript. Вот моя задача

Я хочу создать серийный номер, начинающийся с 'A' и с номерами в порядке приращения. Пример: A000001, A000002, ..., A000010 и так далее. Я хочу сгенерировать этот серийный номер в соответствии с текущим годом, который я даю в качестве входных данных. Пример. Если текущим годом является 2020, то A000001, A000002, ..., A000010 и т. Д. Если текущим годом является 2021, то B000001, B000002, ..., B000010 и т. Д. Если текущим годом является 2046, то это должно быть как AA000001, AA000002, ..., AA000010 и так далее. Потому что 26 букв, оно должно начинаться с АА. То же самое для 2047 - AB, 2048 - A C и т. Д.

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».

Я застрял здесь и не понимаю, как это сделать и как добавить увеличивающееся число с этим. Здесь я даю изображение моей концепции

Спасибо.

1 Ответ

0 голосов
/ 14 февраля 2020

Вам нужно вычесть n к 2020 году, чтобы сделать его отправной точкой (думать о нем как о смещении). Также 2027 будет H, а не AA, так как 2020 = A, и 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));
...