2016-09-30 57 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。

相同的第二。

子字符串(包括開始索引,最後索引獨佔);

相關問題