我需要确定一个值是否存在于数组中。
我正在使用以下功能:
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
CodePen 验证/使用