Ich mache eine FreeCodeCamp-Abfrage, "suche und zerstöre", wo ich eine Funktion erstelle, die Elemente aus dem bereitgestellten Array entfernt.Filtern eines Arrays innerhalb eines Arrays
Gegebenfunction destroyer(arr) {
// Remove all the values
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
Das Ergebnis
[1, 1]
sein sollte Während ich verschiedene Lösungen gesehen habe, wollte ich so, wenn ich die Lösung machen konnte ich auf der Arbeit gearbeitet hatte, weil ich es intuitiv war zu mir und wird hoffentlich zu einem besseren Verständnis der Filterung führen. Ich denke, der Grund, warum meine Lösung nicht funktioniert, ist, dass ich die Methode nicht richtig benutze.
filter();
Wie auch immer, hier ist mein Versuch:
function destroyer(arr) {
// Remove all the values
var args = Array.prototype.slice.call(arguments);
//makes the arguments an array
function destroy(value) {
for (var i=1; i < args.length; i++)
return value !==args[i];
// creates a loop that filters all arguments after the first one and removes from the initial argument, regardless of how many there are.
}
var filtered = arr.filter(destroy);
return arr[0];
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
Ich bemerkte, dass
var filtered = arr.filter(destroy);
ist wahrscheinlich das Problem, weil die ersten drei Argumente gefiltert werden, aber nicht erstes Argument. Allerdings, wenn ich versuche,
var gefilterten = arr [0] .filter (zerstören); Was ich dachte, würde das erste Argument zielen, wird ein Fehler ausgelöst. Ist es möglich, das Problem auf diese Weise zu lösen? Ich wollte es auf diese Art und Weise zu tun, weil ich die Art, wie die folgende Funktion ist Setup:
function badValues(val){
return val !== 2;
}
function bouncer(arr) {
return arr.filter(badValues);
}
bouncer([1, null, NaN, 2, undefined]);
und wollte 2 für die Argumente ersetzen, die entfernt werden müssen.
Danke allen!
Vielleicht so etwas? 'function destroyer() { let args = Array.from (Argumente); let array = args [0]; args.shift(); return array.filter (e =>! Args.includes (e)) } ' – Brian
Ihre' destroyer() 'Funktion benötigt nur ein Argument, aber Sie übergeben es drei. –
Es gibt mehrere Probleme bei der Implementierung. Zum Beispiel kehrt die Funktion 'destroy' bei der 1. Iteration zurück. Erfahren Sie mehr über Javascript eingebaute Funktionen wie 'find',' filter', ... machen Ihren Code sauberer, smarter, lesbarer. – RaphaMex