2016-09-30 77 views
0

我正在测试我对另一个SO question的答案,并且遇到了这种奇怪的行为,对于我的生活我不知道到底是什么。为什么这个Javascript无法找到正确的索引?

代码:

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

+4

你的意思是'substr'而不是'substring'。或者只是使用'[我]'而不是。 – Xufox

+0

呃。必须是星期五。谢谢! –

回答

0

使用.substr()作为长度。 .substring()需要一个位置。

5

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

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

,然后你可以简单地做 - >

console.log(translateLetter['a']) 
+0

比原来好 –

0

的第一空空间为空,因为你已经在该组织的indexOf函数返回1,然后将其设置传递给函数“B”变量“我”,然后我在子字符串函数和子字符串函数中使用返回中间值,包括第一个和排除给定值的最后一个索引,所以子字符串(1,1)和1,1指向相同的索引,所以它返回null。

相同的第二。

子字符串(包括开始索引,最后索引独占);

相关问题