【问题标题】:Javascript array indexOf returns undefinedJavascript 数组 indexOf 返回未定义
【发布时间】:2013-02-05 12:13:25
【问题描述】:

当调用我的函数checkIss()issFullArray.indexOf(issToCheck) 总是返回undefined。我运行了.length,输出了issFullArray 的内容,但我不知道为什么它不起作用——数组对我来说看起来不错。正如您在下面看到的,我尝试将issArray 显式设置为一个数组并复制我的getIssList() 返回的数组

function updateIss() {
    var issArray = [];

    var currService = current.u_business_service;
    var currIss = current.u_is_service;
    issArray = getIssList(currService).slice(); //getIssList() returns an arry
    if (checkIss(issArray, currIss) === false) {
        //do stuff
    }
}

function checkIss(issFullArray, issToCheck) {
    if (issFullArray.indexOf(issToCheck) < 0) {
        return false;
    } else {
        return true;
    }
}

【问题讨论】:

  • 您使用的浏览器是否支持array.indexOf。
  • IE indexOf()。
  • 我试过 IE9、Firefox 15 和 Chrome 24。真的有不支持 indexOf() 的浏览器吗?如果你问我有点傻......
  • 将 issArray 的范围设为全局,不要将其传递给您的 checkIss() 函数,看看它是否有效
  • 感谢您的 cmets,但似乎是我正在编写的软件不支持 indexOf。不支持这么简单的功能我觉得有点奇怪,但是嘿嘿,我会提出一个错误,看看会发生什么!

标签: javascript arrays undefined indexof


【解决方案1】:

最简单的方法是遍历数组并比较每个值,如果匹配则返回 true,否则返回 false。代码不多,适用于所有浏览器。

function checkIss(issFullArray, issToCheck) {
    for(i=0; i<issFullArray.length; i++) {
        if(issFullArray[i]==issToCheck) {
            return true;
        }
    }
    return false;
}

【讨论】:

  • 谢谢 ElPedro,看来我会用这个了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2019-05-30
  • 2019-01-07
相关资源
最近更新 更多