Home  >  Article  >  Web Front-end  >  JS判断元素是否在数组内的实现代码_javascript技巧

JS判断元素是否在数组内的实现代码_javascript技巧

WBOY
WBOYOriginal
2016-05-16 15:07:192488browse

一、JQuery

如果是用JQuery的话,可以用inArray()函数:

jquery inarray()函数详解
jquery.inarray(value,array)
确定第一个参数在数组中的位置(如果没有找到则返回 -1 )。

determine the index of the first parameter in the array (-1 if not found).
返回值
jquery
参数
value (any) : 用于在数组中查找是否存在
array (array) : 待处理数组。


用法为:

复制代码 代码如下:

$.inArray(value, array) 

二、自己写函数

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

用法为:

复制代码 代码如下:

var arr = new Array(1, 2, 3);
contains(arr, 2);//返回true
contains(arr, 4);//返回false

三、给Array增加一个函数

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

使用方法:

复制代码 代码如下:

[1, 2, 3].contains(2); //返回true
[1, 2, 3].contains('2'); //返回false

四、使用indexOf

但是有个问题是IndexOf在某些IE版本中是不兼容的,可以用下面的方法:

if (!Array.indexOf) {
  Array.prototype.indexOf = function (obj) {
    for (var i = 0; i < this.length; i++) {
      if (this[i] == obj) {
        return i;
      }
    }
    return -1;
  }
}

先判断Array是否有indexOf方法,如果没有就扩展出此方法。

所以上面代码要写在使用indexOf方法的代码之前:

var arr = new Array('1', '2', '3');
if (!Array.indexOf) {
  Array.prototype.indexOf = function (obj) {
    for (var i = 0; i < this.length; i++) {
      if (this[i] == obj) {
        return i;
      }
    }
    return -1;
  }
}
var index = arr.indexOf('1');//为index赋值为0

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn