2009-09-22 70 views
0

var arr = ['test','hello'];Javascript阵列操作

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

回答

2

在javascript中1.6+可以使用.indexOf()

var index = arr.indexOf('hello'); 

在早期版本中,你只想通过自己的数组必须循环。

有趣的是,alert([].indexOf)在Chrome中为您提供了实现:

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))做虽然...

+0

在哪里可以看到我的javascript版本? – omg 2009-09-22 09:00:08

+0

要做的最好的事情就是看看它是否支持 - if(typeof [] .indexOf =='undefined'){你没有它} – Greg 2009-09-22 09:02:53

+0

这是支持的,但仍然不知道javascript版本:( – omg 2009-09-22 09:05:49

3
arr.indexOf("hello"); 

indexOf方法并不是在所有浏览器都支持(这是在JavaScript 1.6增加),但是你可以使用下面的代码,使其在那些不这样做(从MDC page for 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; 
    }; 
} 
0
arr.indexOf('hello');

我不知道,如果它在IE浏览器虽然(它肯定可用于Firefox和Webkit)。

:-D

+0

我真的不知道为什么我会得到投票....我的答案与其他(没有错)肯定没有太大区别。 – NawaMan 2009-09-22 13:02:15