2016-06-17 5 views
-2

nur eine kurze Frage abgerufen werden. Wie kann ich Elemente in einem Array abrufen, wenn die Elemente nicht durch andere Elemente in einem Array geteilt werden können? zum Beispiel = arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] und collection =[2,3,5,7], dann wäre das Ergebnis result =[11,13] seineWie Elemente in einem Array nach dem Filtern von anderen Array mit Javascript>

ich mit diesem Code versucht, aber es hat nicht funktioniert

for(var i=0; i<arr.length;i++){ 
    for (var j=0; j<collection.length; j++){ 
     if (arr[i]/collection[j] === 0){ 
     arr.splice(i,1); 
     } 
    } 
    } 
+0

gut, das ist tatsächlich versucht, Prime zu finden Zahlen – Owennn

+0

Möchten Sie die Zahlen zurückgeben, die nicht durch die anderen im Array geteilt werden können oder Primzahlen zurückgeben? – JordanHendrix

+0

@JordanHendrix seine Zahlen, die nicht durch die anderen im Array geteilt werden können – Owennn

Antwort

2

So etwas

1) mit Filter und forEach:

var arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; 

var collection =[2,3,5,7]; 


function notDivided(arr1, arr2) { 

    return arr1.filter(function(item) { 
     var can_be_divided = false; 
     arr2.forEach(function(item_to_divide) { 
      if (item % item_to_divide === 0) can_be_divided = true; 
     }); 
     return !can_be_divided; 
    }); 

} 

var new_array = notDivided(arr,collection); 

console.log(new_array); 

2) mit Filter und einig (@ torazaburo Vorschlag)

function notDivided(arr1, arr2) { 

    return arr1.filter(function(item) { 
     return !arr2.some(function(item_to_divide) { 
      return (item % item_to_divide === 0); 
     }); 
    }); 

} 

Oder doch mit Pfeil Funktionen:

notDivided = (arr1, arr2) => arr1.filter((item) => !arr2.some((item_to_divide) => item % item_to_divide === 0)); 
+0

Warum verwenden Sie 'forEach' mit externen Variablen statt nur mit' some', was es so einfach wie 'return arr2.some (item_to_divide => ! (Artikel% item_to_divide)) '? –

+0

@torazaburo, du hast Recht! aktualisiert! Vielen Dank – mrlew

0

neue Array deklarieren Ergebnisse

Verwendung% Symbol sammeln zu überprüfen

Beispiel 4% 2 = 0

dieses Mittel 4 kann durch 2 becau aufgeteilt se Ergebnis ist 0, so können Sie

if (!(arr[i]%collection[j] === 0)){ 
    newarr.push(arr[i]) 
    } 

bearbeitet machen, wenn Sie wollen beispielsweise ohne hier zu denken zurückkehren, was Sie schreiben zu

var arr =[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; 
var collection =[2,3,5,7]; 
var newarr=[]; 
var addtonew = 0; 

for(var i=0; i < arr.length; i++){ 
    addtonew = -1; 
    for (var j=0; j<collection.length; j++){ 
    if (arr[i]%collection[j] === 0) 
    { 
     addtonew = -1; 
     break; 
    } 
    addtonew = arr[i]; 
    } 
if (addtonew > -1) 
    newarr.push(addtonew); 
} 

#[11, 13] 
Verwandte Themen