JavaScript indexOf给出了错误的结果

时间:2016-05-02 13:47:25

标签: javascript jquery

我正在编写一个代码,要求我在数组中获取字符串的索引。我使用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位。

2 个答案:

答案 0 :(得分:11)

字符不是2A,它在字符串的开头包含非打印字符符号Zero Width Joiner

可以从

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

这使字符串无效。

难怪为什么indexOf没有给出正确的索引。

答案 1 :(得分:3)

您的代码数组有错误。 indexOf工作正常。看看我在jsfiddle中粘贴代码数组时会发生什么(附加图像)

Problem with image