【问题标题】:Javascript .indexOf not working on an int arrayJavascript .indexOf 不适用于 int 数组
【发布时间】:2013-01-29 20:56:19
【问题描述】:

代码:

function showlayer(name){
    var size = js_array.length
    var index = js_array.indexOf(name);
    var plusOne = js_array[index+1];
    document.write("" + name + "<br />" + js_array + "<br />" + index + "<br />" +
                   plusOne + "<br />" )
    ...
}

输出:

301
300,299,301,290,303,304,302,310,291,306,308,305,307,292,294,295,309
-1
300

name 的所有可能值都在数组中,但由于某种原因 indexOf() 从未找到它们。怎么了?

【问题讨论】:

  • 你在比较数字和字符串吗?
  • 这不是您在此处具体看到的问题,但值得指出的是,Array.indexOf() 在 IE8 及更低版本上不可用。见这里:stackoverflow.com/questions/2790001/….
  • @pseudosavant 是的,我知道。希望不会有太大问题
  • 那个 stackoverflow 链接有一个 polyfill,如果你需要的话,可以为 IE6-8 添加对 Array.indexOf() 的支持。我现在更喜欢只支持 IE9 及更高版本,但仍然有很多 IE8 人在那里。

标签: javascript indexof


【解决方案1】:

试试这个:

...
var index = js_array.indexOf(parseInt(name, 10)); // so that it does not try to compare strings...
...

【讨论】:

  • @gta0004 乐于助人^_^
  • @gta0004:显然,name 不是 int。
  • @SLaks 呵呵,很可能是true
  • @gta0004 输出typeof name 你会看到^_^
  • 或者,只需将密钥转换为 Int:array.indexOf(+name)
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多