Javascript数组操作

时间:2009-09-22 08:53:44

标签: javascript arrays

var arr = ['test','hello'];

是否有一个javascript本机调用来获取数组中某个值('hello')的索引?

3 个答案:

答案 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