2011-11-18 454 views
5

我困在這裏。我有2個數組,我不知道每個數組的長度,他們可以是相同的長度或不是,我不知道,但我需要創建一個新的數組與不常見的數字只是一個(2, 10)。如何比較兩個不同長度的數組,如果你不知道每個在JavaScript中的長度?

對於這種情況:

var a = [2,4,10]; 
    var b = [1,4]; 

    var newArray = []; 

    if(a.length >= b.length){ 
     for(var i =0; i < a.length; i++){ 
      for(var j =0; j < b.length; j++){ 
       if(a[i] !=b [j]){ 
        newArray.push(b);   
       }   
      } 
     } 
    }else{} 

我不知道爲什麼我的代碼永遠不會到達的第一個條件,我不知道當b具有比更長度做什麼。

+0

你想不同的行爲時,A比B更短?或者這是企圖使它工作? – BudgieInWA

+0

它試圖使它工作 – bentham

+0

此外,兩個數字是相同的,但不是在相同的位置認爲是相同的? – BudgieInWA

回答

7

如果我正確理解您的要求,您的代碼似乎有邏輯錯誤。

該代碼將把a中不在b中的所有元素放入newArray

var a = [2, 4, 10]; 
var b = [1, 4]; 

var newArray = []; 

for (var i = 0; i < a.length; i++) { 
    // we want to know if a[i] is found in b 
    var match = false; // we haven't found it yet 
    for (var j = 0; j < b.length; j++) { 
     if (a[i] == b[j]) { 
      // we have found a[i] in b, so we can stop searching 
      match = true; 
      break; 
     } 
     // if we never find a[i] in b, the for loop will simply end, 
     // and match will remain false 
    } 
    // add a[i] to newArray only if we didn't find a match. 
    if (!match) { 
     newArray.push(a[i]); 
    } 
} 

爲了澄清,如果

a = [2, 4, 10]; 
b = [4, 3, 11, 12]; 

然後newArray[2,10]

+0

不返回2和10謝謝它返回1,4,1,4 – bentham

+0

我提醒newArray,我得到1,4,1,4我仍然試圖謝謝回答我不知道爲什麼你的代碼不工作,你有檢查你的代碼? – bentham

+0

@Qeorge,我發現了錯誤。將第三行更改爲'newArray.push(a [i]);',就像我在編輯中一樣。 – BudgieInWA

2

試試這個

var a = [2,4,10]; 
var b = [1,4]; 
var nonCommonArray = []; 
for(var i=0;i<a.length;i++){ 
    if(!eleContainsInArray(b,a[i])){ 
     nonCommonArray.push(a[i]); 
    } 
} 

function eleContainsInArray(arr,element){ 
    if(arr != null && arr.length >0){ 
     for(var i=0;i<arr.length;i++){ 
      if(arr[i] == element) 
       return true; 
     } 
    } 
    return false; 
} 
+0

感謝您的回答我已經接受了以前的答案,但讓我檢查 – bentham

+0

@bentham你是怎麼找到這個的? – Magpie

相關問題