2016-05-02 65 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")); 

我在控制檯中收到的響應是-1而不是2,因爲「2A」處於第2位置。

+1

你的代碼是在這裏工作。我相信排字錯誤是逗號 – 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