2009-09-22 64 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