我需要确定数组中是否存在一个值。

我正在使用以下函数:

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] == obj) {
            return true;
        }
    }
    return false;
}

上面的函数总是返回false。

数组值和函数调用如下所示:

arrValues = ["Sam","Great", "Sample", "High"]
alert(arrValues.contains("Sam"));

当前回答

Array.prototype.includes ()

在ES2016中,有Array.prototype.includes()。

includes()方法确定数组是否包含某个元素,根据需要返回true或false。

例子

["Sam", "Great", "Sample", "High"].includes("Sam"); // true

支持

根据kangax和MDN,支持以下平台:

Chrome 47 边缘14 Firefox 43 歌剧34 Safari 9 节点6

支持可以使用Babel(使用Babel -polyfill)或core-js扩展。MDN还提供了polyfill:

if (![].includes) {
  Array.prototype.includes = function(searchElement /*, fromIndex*/ ) {
    'use strict';
    var O = Object(this);
    var len = parseInt(O.length) || 0;
    if (len === 0) {
      return false;
    }
    var n = parseInt(arguments[1]) || 0;
    var k;
    if (n >= 0) {
      k = n;
    } else {
      k = len + n;
      if (k < 0) {k = 0;}
    }
    var currentElement;
    while (k < len) {
      currentElement = O[k];
      if (searchElement === currentElement ||
         (searchElement !== searchElement && currentElement !== currentElement)) {
        return true;
      }
      k++;
    }
    return false;
  };
}

其他回答

我的小小贡献:

function isInArray(array, search)
{
    return array.indexOf(search) >= 0;
}

//usage
if(isInArray(my_array, "my_value"))
{
    //...
}

另一种选择是使用Array。部分(如有)采用以下方式:

Array.prototype.contains = function(obj) {
  return this.some( function(e){ return e === obj } );
}

传递给Array的匿名函数。当且仅当数组中存在与obj相同的元素时,一些函数将返回true。如果没有这样的元素,则该函数对于数组的任何元素都不会返回true,因此array .数组将返回true。有些也会返回false。

使用像lodash这样的库几乎总是更安全,因为存在跨浏览器兼容性和效率方面的所有问题。

效率,因为你可以保证在任何给定的时间,一个非常流行的库,如下划线,将有最有效的方法来完成这样的效用函数。

_.includes([1, 2, 3], 3); // returns true

如果你担心通过包含整个库而添加到应用程序中的大量内容,那么你可以单独包含功能:

var includes = require('lodash/collections/includes');

注意:在旧版本的lodash中,这是_.contains()而不是_.includes()。

function setFound(){   
 var l = arr.length, textBox1 = document.getElementById("text1");
    for(var i=0; i<l;i++)
    {
     if(arr[i]==searchele){
      textBox1 .value = "Found";
      return;
     }
    }
    textBox1 .value = "Not Found";
return;
}

这个程序检查是否找到给定的元素。Id Text1表示文本框的id, searchele表示要的元素 搜索(得到fron user);如果需要索引,请使用I值

给定IE的indexOf实现(由eyelidlessness描述):

Array.prototype.contains = function(obj) {
    return this.indexOf(obj) > -1;
};