JavaScript测试值是否在数组中

3

在javascript中是否有一个函数可以测试给定值(在我的情况下是字符串)是否存在于数组(字符串数组)中?我知道我可以循环遍历每个值,但我想知道js是否有一种简写方式。


可能是Javascript - array.contains(obj)的重复问题。 - annakata
如果您需要经常执行此操作,则索引数组可能不是正确的数据结构。考虑使用关联数组/对象表示(这使您可以使用逻辑“in”运算符)。 - annakata
3个回答

3

@bba,你可能想把这样的信息添加到你的问题中。还要为你的问题添加标签。(编辑了你的问题,添加了“jQuery”标签。) - David Thomas
@bba - 如果您的问题涉及jQuery,请务必使用jQuery标签,这样通常会得到非常不同的答案。 :) - Nick Craver

2

虽然有.indexOf()方法可以实现,但是IE<9不支持该方法:

if(array.indexOf("mystring") > -1) {
  //found
}

从同一个MDC文档页面中,这是在使用之前包含的内容,以使IE也能正常工作:

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}

.indexOf() 返回字符串在数组中被找到的索引位置,如果没有找到则返回-1


0

对于那些本应该在 JavaScript 中但我还没有找到的 PHP 函数,我会去 http://phpjs.org

如果你只是使用 JavaScript,想要使用的函数是 in_array,可以在这里找到:http://phpjs.org/functions/in_array:432

否则,请使用此页面上的 jQuery 解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接