2016-07-09 20 views
0

Ich arbeite an diesem Problem von FreeCodeCamp in JS. Grundsätzlich muss ich den Unterschied zwischen zwei Arrays finden und dann ein Array mit diesen Werten, d. H. Strings und Ganzzahlen.For Schleife - Array, indexOf(), concat()

function diffArray(arr1, arr2) { 
 
    //console.log(arr1.length); 
 
    var newArr = []; 
 
    var dummy = []; 
 
    for (var x=0;x<arr1.length;x++) { 
 
     if (arr2.indexOf(arr1[x]) === -1) { 
 
     newArr = newArr.concat(arr1.slice(x));}} 
 
    for (var y=0;y<arr2.length;y++) { 
 
     if (arr1.indexOf(arr2[y]) === -1 && newArr.indexOf(arr2[y]) === -1) { 
 
     newArr = newArr.concat(arr2.slice(y)); 
 
     } 
 
    } 
 
    console.log(newArr); 
 
    return newArr; 
 
} 
 

 
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);

Es funktioniert fast. Wenn diese nicht funktionieren nicht:

  • [1, 2, 3, 5], [1, 2, 3, 4, 5] - Gibt [4, 5].
  • ["diorite", "andesite", "grass", "dirt", "pink wool", "dead shrub"], ["diorite", "andesite", "grass", "dirt", "dead shrub"] - gibt ["pink wool", "dead shrub"].

Diese arbeiten aber:

  • [1, "calf", 3, "piglet"], [1, "calf", 3, 4]
  • [], ["snuffleupagus", "cookie monster", "elmo"]

Antwort

0

warum sind Sie in Scheiben schneiden und concat Ihre Ausgangsarray zu füttern?

  • iterieren arr1
  • wenn arr1 ein Element hat, das nicht in ARR2 ist schieben, es zu newArr
  • Iterierte obwohl ARR2
  • wenn ARR2 ein Element hat, das nicht in arr1 ist es newArr schieben
  • return newArr
+0

Ja, ich weiß es nicht wirklich. Ich denke, ich dachte Push war nur für Streicher. Ich habe es geändert und es hat funktioniert. Vielen Dank. – JiveTurkey