2016-06-23 9 views
-1

Ziel des Skripts: Ein Array und mehrere Argumente werden an eine Funktion übergeben. Ein Array muss zurückgegeben werden, abzüglich der Elemente, die mit den Argumenten identisch sind.Verwenden von filter() - und Arguments-Objekt. Logischer Fehler?

Es gibt keine Syntaxfehler und ich kann nicht den Fehler in meiner Logik herausfinden.

function destroyer(arr) { 

function isTheDestroyer(x) { 

    //Using the arguments object 
    for (i=1; i<arguments.length; i++) { 
     if (x == arguments[i]) { 
     return false; 
     } 
    } 
    return true; 
} 

var filtered = arguments[0].filter(isTheDestroyer); 
return filtered; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 

Der Ausgang bleibt unverändert, wenn ich es laufen.

+3

Haben Sie debugged zu sehen, was 'Argumente' in' isTheDestroyer' ist? Ich vermute stark, dass es nicht das ist, was du denkst. –

+0

@James Thorpe Oh ich sehe, wie kann ich dann auf die 'Argumente' in 'IsTheDestroyer' zugreifen? – AlmostNihilist

Antwort

0

Ich stimme @James Thorpe zu. Argumente in isTheDestroyer ist nicht das gleiche wie die Argumente in Zerstörer (in Wirklichkeit ist es nicht in der gleichen Reihenfolge). Ich empfehle Ihnen, eine Schließung zu verwenden

function destroyer(arr) { 

var args = arguments; 
function isTheDestroyer(x) { 

    //Using the arguments object 
    for (i=1; i<args .length; i++) { 
    if (x == args [i]) { 
     return false; 
    } 
    } 
    return true; 
} 

var filtered = arguments[0].filter(isTheDestroyer); 
return filtered; 
} 

destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
+0

Arbeitete perfekt! Ich hätte herausfinden müssen, dass alle Funktionen ihr eigenes "Argument" -Objekt haben. – AlmostNihilist

Verwandte Themen