2013-10-09 211 views

回答

1
  1. .indexOf()将工作,问题是与array变量。
  2. array变量本身包含2个不同的数组。

请尝试下面的代码。

var array = [ 
    ['apple', 23, 1, 20], 
    ['orange', 12, 10, 10] 
]; 
for (var i = 0; i < array.length; i++) { //Iterate through arrays in array 
    if (array[i].indexOf(10) > -1) { 
     alert("Yep"); 
    } else { 
     alert("nope"); 
    } 
} 

入住这JSFiddle

0

的问题可能是因为:

  • 你嵌套阵列不支持
  • Array.indexOf所有浏览器都

以下应该工作:

function includes(arrayOfArrays, item) { 
    var array, i, j; 
    for(i=0; i<arrayOfArrays.length; ++i) { 
     array = arrayOfArrays[i]; 
     for(j=0; j<array.length; ++j) { 
      if(array[j] === item) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
1

ECMAScript 5,有两个阵列方法someindexOf

var search = 10 ; 

var found = a.some(function(v) { 
    return v.indexOf(search) !== -1 ; 
}); 

if (found) { 
    alert('exists') 
} 
+0

+1有趣,看起来优雅。循环变得简单,我创建了一个小提琴http://jsfiddle.net/praveen_jegan/eqVbz/2/。它支持所有浏览器的一个问题是什么?特别是IE? – Praveen

+0

@ user1671639请查看http://kangax.github.io/es5-compat-table/ – rab

+0

即9+,但有[shim可用](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#Compatibility),默认情况下没有它的浏览器。 @rab,可能希望在调用'indexOf'之前检查v是否为数组。 – thgaskell

0

您可以使用下面的代码在数组中进行搜索。

<!DOCTYPE html> 
<html> 
<body> 

<script> 
var i,j; 
var toFind = 10; 
var array = new Array(); 
array = [['apple',23,1,20],['orange',12,10,10]] 

for (i=0;i<array.length;i++) 
{ 
    for(j=0;j<array[i].length;j++) 
    { 
     if(array[i][j] == toFind) 
     document.write("element found <br/>"); 
    } 
} 
</script> 

</body> 
</html> 

其中toFind是要查找的元素或数字。

相关问题