为什么这个Javascript无法找到正确的索引?

时间:2016-09-30 22:51:36

标签: javascript

我正在测试我对另一个SO question的回答并遇到了这种奇怪的行为,对于我的生活,我不知道到底是什么。

代码:



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?

Code on JSFiddle

3 个答案:

答案 0 :(得分:5)

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

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

然后你可以简单地做 - &gt;

console.log(translateLetter['a'])

答案 1 :(得分:0)

使用.substr()一个长度。 .substring()采取立场。

答案 2 :(得分:0)

第一个空格是null,因为你已经在indexOf函数返回1的函数中传递了“b”,然后将其设置为变量“i”,然后在子字符串函数和子串函数中使用i返回值在中间包括第一个并且排除给定值的最后一个索引,因此substring got(1,1)和1,1指向相同的索引,因此它返回null。

第二个相同。

substring(包括Begin index,最后一个索引);