我需要确定数组中是否存在值。
我正在使用以下功能:
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"));
var contains = function(needle) { // Per spec, the way to identify NaN is that it is not equal to itself var findNaN = needle !== needle; var indexOf; if(!findNaN && typeof Array.prototype.indexOf === 'function') { indexOf = Array.prototype.indexOf; } else { indexOf = function(needle) { var i = -1, index = -1; for(i = 0; i < this.length; i++) { var item = this[i]; if((findNaN && item !== item) || item === needle) { index = i; break; } } return index; }; } return indexOf.call(this, needle) > -1; };
你可以像这样使用它:
var myArray = [0,1,2], needle = 1, index = contains.call(myArray, needle); // true
jQuery为此具有实用程序功能:
$.inArray(value, array)
返回valuein 中的索引array。-1如果array不包含,则返回value。
valuein
array
value
通常,这就是indexOf()方法的用途。
return arrValues.indexOf('Sam') > -1