2012-05-21 45 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