为什么这个Javascript找不到正确的索引

Why is this Javascript failing to find the right index?

本文关键字:索引 找不到 Javascript 为什么      更新时间:2023-09-26

我在测试另一个SO问题的答案时,遇到了这种奇怪的行为,我一辈子都不知道发生了什么。

代码:

function translateLetter(input) {
    const untranslated = "abcdefghijklmnopqrstuvwxyz";
    const translated   = "zyxwvutsrqponmlkjihgfedcba";
    var i = untranslated.indexOf(input);
    console.log(i);
    return translated.substring(i,1);
}
console.log(translateLetter("a"));
console.log(translateLetter("b"));
console.log(translateLetter("c"));

预期输出:

0
z
1
y
2
x

实际输出:

0
z
1
          <--- WTH?
2
y         <--- WTF?

JSFiddle 上的代码

如果速度很重要,我会使用一个对象来进行查找。例如

var translateLetter= {a:'z',b:'y'... etc }

然后你可以简单地做->

console.log(translateLetter['a'])

使用.substr()作为长度。CCD_ 2占据一个位置。

第一个空格为null,因为您在函数中传递了"b",indexOf函数返回1,然后将其设置为变量"i",i随后用于子字符串函数,子字符串函数返回中间的值,包括给定值的第一个和不包括最后一个索引,因此子字符串get(1,1(和1,1指向同一索引因此它返回null。

第二次也是如此。

子字符串(包含开始索引,不包含最后索引(;