2013-10-09 423 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是要查找的元素或數字。

相關問題