给定一个javascript数组及其成员之一,如何检索成员索引而不必将成员的内容与数组中的每个其他成员进行比较?
答案 0 :(得分:3)
您需要拨打indexOf
,如下所示:
var index = someArray.indexOf(value);
由于IE没有indexOf
,您需要自己制作:
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 :(得分:0)
var array = ['a', 'b', 'c'];
// The following line returns the zero-based index of 'c'
array.indexOf('c'); // 2
// If the element is not found in the array, -1 is returned:
array.indexOf('z'); // -1
可悲的是,Internet Explorer中本身不支持Array#indexOf
。请参阅SLaks关于工作后备的答案!
答案 2 :(得分:0)
考虑使用Objx来处理数组http://code.google.com/p/objx/wiki/Plugins