var arr = ['test','hello'];
是否有一个javascript本机调用来获取数组中某个值('hello')的索引?
答案 0 :(得分:3)
arr.indexOf("hello");
所有浏览器都不支持indexOf
方法(它是在JavaScript 1.6中添加的),但您可以使用以下代码使其在不支持的方法中工作(代码来自{{3 }}):
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 :(得分:2)
在javascript 1.6+中,您可以使用.indexOf()
:
var index = arr.indexOf('hello');
在早期版本中,您只需自己循环遍历数组。
有趣的是,Chrome中的alert([].indexOf)
为您提供了实施:
function indexOf(element, index) {
var length = this.length;
if (index == null) {
index = 0;
} else {
index = (_IsSmi(IS_VAR(index)) ? index : ToInteger(index));
if (index < 0) index = length + index;
if (index < 0) index = 0;
}
for (var i = index; i < length; i++) {
var current = this[i];
if (!(typeof(current) === 'undefined') || i in this) {
if (current === element) return i;
}
}
return -1;
}
不要问我_IsSmi(IS_VAR(index))
做了什么......
答案 2 :(得分:0)
arr.indexOf('hello');
我不知道它是否适用于IE(它肯定适用于Firefox和Webkit)。
: - d