Wir arbeiten an einer Programmieraufgabe, um die Funktionalität von underscore.js in Standardjavascript zu implementieren. Speziell arbeite ich an der Implementierung der _.some
Funktion. (http://underscorejs.org/#some) Der Teil Ich kämpfe mit ist es mich fragt, einen Weg zu finden, um es zu lösen _.every
intern verwenden. (http://underscorejs.org/#every)Wie löst man _.some mit _.every?
Ich habe bereits die _.every
Funktion früher beendet und es funktioniert wie es sollte. Hier
ist logisch, was ich in skizzierte Code tun bin zu wollen:
_.some = function(collection, truthStatementFunction) {
return !(_every(collection, !truthStatementFunction))
}
oder in Englisch, drehen die Wahrheit Aussage zu testen, wo die Bedingung falsch ist ... und wenn der _.every
Test dann true zurück ... dann wissen wir, dass _.some der ursprünglichen Wahrheit Aussage falsch ist (so die Rückkehr der _.every
Flip die richtige Rückkehr für _some
zu bekommen). Ebenso, wenn _.every
false zurückgibt, dann klappen Sie das um, um die korrekte Rückgabe von true für _.some
zu erhalten.
Offensichtlich ist das Problem mit dieser Skizze ist der !truthStatementFunction
Teil. Wie komme ich in diesen Iterator, um die Interna der Funktion zu ändern, um sie umzukehren? Scheint nicht, dass die Interna der Funktion zugänglich sind ...
Bin ich den falschen Baum völlig bellend, und es gibt einen besseren Weg, um dies mit _.every
zu lösen?
Sie haben die richtige Idee. Allerdings müssen Sie den '!' - Operator und die Funktion [https://en.wikipedia.org/wiki/Function_composition] verfassen. es ist etwas wie 'function (x) {return! truthStatementFunction (x)}' anstatt nur '! truthStatementFunction'. –
Um Ihre Frage zu beantworten ... Es ist eine Lernübung so der Punkt, zu lernen, ist, eine oder andere Weise (obwohl ich es 100% auf meinem eigenen Know Lösung wäre der effektivste Weg zu lernen, immer zu lange stecken und Zeit zu verschwenden dass ich andere nützliche Dinge lernen könnte, tut mir nicht gut). Ich würde hier lieber einen Hinweis als eine direkte Antwort erhalten, aber ich war mir nicht sicher, ob das mit den scheinbar strengen Regeln des Stack-Overflows in Konflikt geraten würde. – jjj