2016-08-27 8 views
0

Dies ist eine Zuweisung im freien Code-Lager, mein Problem ist meine for-Schleife nicht iterieren, es ist eine Funktion von Filter-Methode zurückgegeben, ich muss die zusätzlichen Parameter neben dem ursprünglichen Array [0] durchlaufen, um zu vergleichen, wenn es übereinstimmt und entfernen.meine for-Schleife wird nicht ausgeführt?

das Ergebnis dieses Codes ist 1,3,1,3, die 1,1 sein möchte.

function destroyer(arr) { 
    var p = arguments.length; // arr length 
    var r = arguments; // 
    function argScope(item) { 
     debugger; 
     for(var a =1; a<=p; a++) { // start iterate at 1, 0 is the initial array I want to remove elements 
      if(item == r[a]) { // this is true at 1 so 2 is removed, but loop doesn't execute 
       return false; 
      } else { 
       return item; 
      } 
     } 
    } 

    var v = arr.filter(function(item,index,array) { 
    debugger; 
    return argScope(item); // call a function for the scope 

    }); 
    return v; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); // function call 

Hilfe?

Antwort

0

Dies sollte es tun:

function destroyer(arr) { 
 

 
    function argScope(item) { 
 
    debugger; 
 
    for (var a = 1; a < arr.length; a++) 
 
     if (item == arr[a]) return false; 
 
    return true; 
 
    } 
 

 
    return arr[0].filter(function(item) { 
 
    debugger; 
 
    return argScope(item); // call a function for the scope 
 
    }); 
 
} 
 

 
var myArray = [1, 2, 3, 1, 2, 3]; 
 
var filteredArray = destroyer([myArray, 2, 3]); 
 

 
console.log(filteredArray);

+0

ich diesen Code getan haben, aber unsere Unterschied sind die Klammern, wusste nicht, das funktioniert, aber ich möchte fragen, warum funktioniert das nicht mit Zahnspangen? – learningjavascriptks

+1

Ich nehme an, Sie sprechen über die Klammern in der For-Schleife? Es wird natürlich mit geschweiften Klammern funktionieren, aber Sie haben das Element in der else-Klausel zurückgegeben. Ich kehrte nach dem Ende der Schleife zurück. –

3

Sie kehren nach genau einer Iteration von Ihrer Schleife zurück. Vielleicht haben Sie gemeint:

for(var a =1; a<=p; a++) { // start iterate at 1, 0 is the initial array I want to remove elements 
    if(item == r[a]) { // r and a is not set, value is only set after 
     return item; 
    } 
} 
return false; 
Verwandte Themen