2012-05-21 93 views
1

我有兩個整數數組a=[1,3,5,7]b=[2,4,6,8]。 現在我需要檢查一個給定的變量$v是否在a中,如果是,則返回b的等效元素。例如:javascript - 檢查var是否在數組中

if $v in a (and $x is its position) return $b[$x]

我該如何執行此操作?

回答

7

indexOf方法將返回找到該項目的數組的索引,如果找不到則返回-1。

var i = a.indexOf(v); 
if (i != -1) 
{ 
    return b[i] 
} 

編輯:這將添加該方法,如果您的瀏覽器沒有它。

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(x) 
    { 
     var i; 
     for (i = 0; i < this.length; i++) 
     { 
      if (this[i] === x) 
      { 
       return i; 
      } 
     } 
     return -1; 
    } 
} 
+3

注意:'Array.IndexOf'方法在IE 8或更低版本中不可用。 – Guffa

+0

大鼠。如果不存在,請編輯答案以添加該方法。 – Joe

+0

謝謝!像魅力一樣工作 – bikey77

3

循環遍歷數組中的項目:

for (var i = 0; i < a.length; i++) { 
    if (a[i] == v) { 
    return b[i]; 
    } 
} 
return -1; // not found 
1
if(a.indexOf(v) > -1) { 
    var id = a.indexOf(v); 
    console.log(b[id]); 
} 

見的Array.indexOf

+1

注意:'Array.IndexOf'方法在IE 8或更低版本中不可用。 – Guffa

1
var i = a.indexOf(v); 
if (i !== -1) 
{ 
    return b[i] 
} 
+0

注意:'Array.indexOf'方法在IE 8或更低版本中不可用。 – Guffa

0

兼容性我想這會工作。

>> function test(k){ return b[a.indexOf(k)]} 

>> test(1) 
2 

>> test(9) 
undefined 

在JS,indexOf總是返回一個整數,並通過調用一個陣列的整數(如A[3]),它總是返回一個值或undefined。明確檢查undefined值,如果你想確保應用程序代碼沒有損壞。

+0

注意:Array.indexOf方法在IE 8或更低版本中不可用。 – Guffa

0

你可能想給下面的函數一個嘗試。 PHP.js真的是一個偉大的功能集合,並向所有貢獻者致敬,讓它成爲今天的樣子。

http://phpjs.org/functions/in_array:432

+0

很多次PHP.js都是使用Javascript學習許多未知事物的好地方。 – Dharmavir