2016-05-02 17 views
2

配列の文字列のインデックスを取得するコードが必要です。私はこれを達成するためにJavaScriptのindexOf関数を使用しています。ここでの問題は、文字列としてコード化されているが、文字列のインデックスを取得できない数値のインデックスを取得できることです。JavaScript indexOfが間違った結果を返す

var codes = ["1", "2", "‍2A", "‍2B", "3", "4", "5", "6", "7", "8", "9", "10", 
      "11", "12", "13", "14", "15", "16", "17", "18", "19", "21", "22", 
      "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", 
      "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", 
      "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", 
      "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", 
      "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", 
      "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", 
      "89", "90", "91", "92", "93", "94", "95"]; 
console.log(codes.indexOf("2A")); 

「2A」が2番目の位置にあるため、コンソールで受信した応答は2ではなく-1になります。

+1

参照してください。私はtypoがカンマがないと信じています – rafaelcpalmeida

+7

jsFiddleにあなたのコードを貼り付けると、印字されない文字が赤く表示されます。 https://jsfiddle.net/j08691/mmdxn0vv/。それを修正すれば問題ありません。 – j08691

+0

[String.indexOf関数の予期しない結果が出る可能性がありますか?](http://stackoverflow.com/questions/21195583/unexpected-result-from-string-indexof-function) –

答えて

11

文字は2Aではありません。文字列の先頭に非印字文字記号Zero Width Joinerが含まれています。

これはこれは、文字列が無効作っている

console.log("‍2A".charCodeAt(0)); // > 8205 // Note that the string is copied from the array `codes` 

から確認することができます。

indexOfが正しいインデックスを表示していないのは不思議ではありません。

2

コード配列にエラーがあります。 indexOfは正常に動作しています。あなたのコードはここで働いている私はjsfiddleでコード配列を貼り付ける場合に発生(画像を添付)

Problem with image