2011-11-18 19 views
5

Bu konuda sıkışıp kaldım. 2 tane dizim var, her birinin uzunluğunu bilmiyorum, aynı uzunlukta olabilirler ya da hayır, bilmiyorum, ama rakamlarla yeni bir dizi oluşturmam gerekiyor. 10). Bu durum için nasıl karşılaştırırsınız?

: kodum ilk koşulu erişemeyerek ben b daha uzunluğa sahip olduğunda ne yapacağını bilmiyorum neden

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{} 

Bilmiyorum.

+0

bir b daha kısa olduğunda farklı davranışlar ister misiniz ? Yoksa bu çalışmayı denemeye mi çalışıyor? – BudgieInWA

+0

Onun çalışması için bir girişimi – bentham

+0

Ayrıca, aynı pozisyonda aynı değil aynı olan iki sayı vardır? – BudgieInWA

cevap

7

Gereksinimlerinizi doğru anlıyorsanız kodunuzda bir mantık hatası var gibi görünüyor.

Bu kod a numaralı b numaralı tüm öğeleri newArray içine koyacaktır.

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]); 
    } 
} 

netleştirmek için, daha sonra

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

eğer newArray deneyin [2,10]

+0

, 2 ve 10 geri dönmedi Teşekkürler, geri dönüyor 1,4,1,4 – bentham

+0

YeniArray'i uyarıyorum ve 1,4,1,4 elde ediyorum Hala yanıtladığınız için teşekkürler. Kodunuzun neden çalışmadığını bilmiyorum, kodunu kontrol ettin mi? – bentham

+0

@Qeorge, Hatayı buldum. Düzenlememde yaptığım gibi 3. son satırı 'newArray.push (a [i]) olarak değiştirin. – BudgieInWA

2

olacak bu

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

Yanıtladığınız için şimdiden bir önceki cevabı kabul ediyorum ama kontrol etmeme izin verin – bentham

+0

@bentham Bunu nasıl buldunuz? – Magpie