我正在测试我对另一个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?
答案 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,最后一个索引);