我想创建一个字母ID系统,该系统应超出26个字符的限制。
我已经创建了一个字母id系统,方法是首先生成一个数字,然后使用该id作为索引将其转换为字母。但是我想做的是在使用了26个字符后,我希望它继续使用AA
,AB
,AC
等。
var alphabet = ("abcdefghijklmnopqrstuvwxyz").split("");
var dataNo = object.find('.builder-list').attr("id").slice(2);
alphabet[dataNo]
现在的问题是,当数字达到25时,没有字母要翻译成。所希望的是字母再次开始重复,如:X
,Y
,Z
,AA
,AB
,AC
,等等
答案 0 :(得分:2)
您可以采用一种方法将数字转换为字母。与十六进制的工作方式类似,当数字超出字母范围时,您将获得用于划分字母范围的字符,然后为剩余的字符添加下一个字母字符。
function convertNumberToId (number) {
var alphabet = 'abcdefghijklmnopqrstuvwxyz'.toUpperCase().split('');
if (number < alphabet.length) {
return alphabet[number];
} else {
return (
convertNumberToId(Math.floor(number / alphabet.length) - 1)
+
convertNumberToId(number % alphabet.length)
);
}
}
console.log(convertNumberToId(25));
console.log(convertNumberToId(26));
console.log(convertNumberToId(280));