Javascript 我怎样才能颠倒这个字母表id获取系统,让它走另一条路呢?

Javascript 我怎样才能颠倒这个字母表id获取系统,让它走另一条路呢?,javascript,jquery,Javascript,Jquery,因此,此函数可以根据您发送的数字获取字母字符或倍数。我想反转这个函数,这样当我发送字符时,我就会收到一个数字。我用一个字母就能做到这一点 我已经创建了一个字母id系统,首先生成一个数字,然后使用这个id作为索引将其转换为字母表中的一个字母。但我想做的是,在使用了26个字符之后,我希望它继续使用AA、AB、AC等等 编辑:我想澄清一下,我的想法是转换器应该扩展到 A系列。因此,在AZ之后,它将转到BA BB。。BZ、CA、CB、CC等。 另外,我想要的回报是一个数字,而不是字母。原来的函数给了我字

因此,此函数可以根据您发送的数字获取字母字符或倍数。我想反转这个函数,这样当我发送字符时,我就会收到一个数字。我用一个字母就能做到这一点

我已经创建了一个字母id系统,首先生成一个数字,然后使用这个id作为索引将其转换为字母表中的一个字母。但我想做的是,在使用了26个字符之后,我希望它继续使用AA、AB、AC等等

编辑:我想澄清一下,我的想法是转换器应该扩展到 A系列。因此,在AZ之后,它将转到BA BB。。BZ、CA、CB、CC等。 另外,我想要的回报是一个数字,而不是字母。原来的函数给了我字母,现在我需要将其反转,以获取在上一个函数中发送的数字

function convertNumberToId (number) {
    var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');

    if (number < alphabet.length) {
      return alphabet[number];
    } else {
      return (
        convertNumberToId(Math.floor(number / alphabet.length) - 1)
        +
        convertNumberToId(number % alphabet.length)
      );
    }
}
修订(从0指数开始)

现在我们从右到左计算值。当您向左移动时,字符的值将乘以字母表的长度,增加到您向左移动的位数。句柄偏移量为1

函数转换器numbertoid(编号){
var字母表='abcdefghijklmnopqrstuvxyz'。拆分('';
if(数字<字母表长度){
返回字母[数字];
}否则{
返回(
convertNumberToId(数学楼层(数字/字母长度)-1)
+
convertNumberToId(数字%alphabet.length)
);
}
}
函数转换器IDTONUMBER(id){
var字母表='abcdefghijklmnopqrstuvxyz'。拆分('';
如果(id.length==1){
返回alphabet.indexOf(id)>=0?alphabet.indexOf(id):-1;
}
否则如果(id.length>0){
设t=0;
for(设i=0;i
JQuery实时演示:

我使用了你原来的函数,但是我假设在这个例子中“a”是1,正如你提到的“aa”是27,但是如果这个部分不同,那么你可以从结束递归的例子中减去1,如果你愿意的话


修改为在一个字符串中处理两个以上的字符

所以您想根据字母表中的索引返回一个字符?@mding5692我想他已经这样做了。如果你输入,他想让它返回AA,比如说,27,如果你输入28,它返回AB。至少我是这样理解的it@Ronnie是的,没错,我觉得这条路线是取26个字符的差异,然后再做另一个索引,因此,like
28%26
给出了2的余数,即B。显然现在不以零为基础思考,但你得到了理想的想法,就像原始函数将数字转换为字母一样?这是一个很好的答案,但不允许在a系列之外继续。我所想的是在AZ之后继续到BA BB BC等等on@IvanSedelkin我相信更新允许在A系列和id中任意数量的字符之外继续。26以下的数字存在问题。Ex
convertNumberToId('5')!=convertIdToNumber(convertNumberToId('5'))
。做了一个小测试来说明这个问题@Pablo你是对的!我假设“a”为1,经过修改以解决此问题
function convertIdToNumber(id){
    var alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
    if($.inArray(id , alphabet) !== -1){
        return alphabet.indexOf(id);
    }
    else{

    }

}
function convertIdToNumber(id){
    const alphabet = 'abcdefghijklmnopqrstuvwxyz'.split('');
    if ($.inArray(id , alphabet) !== -1){
        // Can remove the add one here if you want 'a' = 0 
        return alphabet.indexOf(id) + 1; 
    } else {      
        return (Math.pow(26, id.length - 1) * (alphabet.indexOf(id.charAt(0)) + 1)) +  convertIdToNumber(id.slice(1));
    }
}
console.log(convertIdToNumber("aa")); // 27
console.log(convertIdToNumber("ab")); // 28
console.log(convertIdToNumber("ac")); // 29
console.log(convertIdToNumber("zz")); // 702
console.log(convertIdToNumber("abc")); // 731