2014-07-22 43 views
0

我有一個包含多個元素的數組'''。如何檢查'type'數組中包含的兩個元素? 我曾嘗試下面的代碼檢查javascript數組中的多個元素

var i, j; 
       var type = []; 
       for (i = 1; i <= count; i++) 
       { 
        var filetype_value = parseInt((document.submission['select_type_' + i].value)); 
        type.push(filetype_value); 

       } 
       function search(arg) 
       { 
        for (j = 1; j <= count; j++) 
        { 
         if (type[j] === arg) 
         { 
          return true; 
         } 
         else 
          { 
          return false; 
          } 
        } 

       } 
       if(search(1) && search(2)) 
{ 
alert("Contains in array") 
} 
+1

計數是多少?你在哪裏定義? –

+0

你正在推一個字符串''filetype_value''而不是變量'filetype_value':'type.push(filetype_value);' –

+0

@AntoKing我認爲複製粘貼代碼... –

回答

0

有一些問題,你的方法。

1)你只是檢查是否type[1]===arg它將返回true否則將返回false。所以它只會檢查type[1]

2)因爲file_type值是字符串,所以filetype_value' === arg永遠不會是真的。

3)在你的循環中,j=1將永遠不會檢查數組的元素first

試試這個

function search(arg){ 
var matched = false; 
for (j = 0; j <= type.length; j++){ 
    if (type[j] == arg){ 
     matched = true; 
     break; 
    } 
} 
return matched; 
} 
0

你有2個問題

  1. 你是推字符串「filetype_value」到你的陣列,而不是實際值,以便在您的搜索功能,你實際上是測試:'filetype_value' === arg
  2. 您正在開始使用1的循環,數組的起始索引爲0

變化

type.push('filetype_value'); 

type.push(filetype_value); 

變化

for (j = 1; j <= count; j++) 

for (j = 0; j <= count; j++) 

此外,而不是做一個循環,你可以使用數組indexOf方法來測試數值是否在陣列中

function search(arg){ 
    return type.indexOf(arg) !== -1; 
} 
相關問題