或者你只需要做一个循环并检查每个元素吗?
答案 0 :(得分:6)
Mozilla JS实现和其他现代JS引擎采用了Array.prototype.indexOf
方法。
[1].indexOf(1) // 0
如果它不包含它,则返回-1。
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;
};
}
答案 1 :(得分:5)
如果你正在使用jQuery:jQuery.inArray( value, array )
更新:指向新jQuery API的指向网址
答案 2 :(得分:0)
您可以查看Javascript 1.6的某些功能。
如果您只是想知道它是否在那里,您可以使用indexOf
来满足您的需求。
<强>更新强>
如果你转到这个页面,http://www.hunlock.com/blogs/Mastering_Javascript_Arrays,你可以找到一个在IE浏览器和任何其他没有你想要使用的内置功能的浏览器上使用的功能。
答案 3 :(得分:0)
这是使用自己的indexOf
方法的一种方法。如果环境中存在Array.prototype.indexOf
方法,则此版本会使用此方法;否则,它使用自己的实现。
(此代码已经过测试,但我不保证所有情况的正确性。)
// If Array.prototype.indexOf exists, then indexOf will contain a closure that simply
// calls Array.prototype.indexOf. Otherwise, indexOf will contain a closure that
// *implements* the indexOf function.
//
// The net result of using two different closures is that we only have to
// test for the existence of Array.prototype.indexOf once, when the script
// is loaded, instead of every time indexOf is called.
var indexOf =
(Array.prototype.indexOf ?
(function(array, searchElement, fromIndex) {
return array.indexOf(searchElement, fromIndex);
})
:
(function(array, searchElement, fromIndex)
{
fromIndex = Math.max(fromIndex || 0, 0);
var i = -1, len = array.length;
while (++i < len) {
if (array[i] === searchElement) {
return i;
}
}
return -1;
})
);