2016-07-30 38 views
-1

Ich habe zwei Arrays, die wie folgt aussehen:Vergleicht man Werte in einem Array mit den Werten in einer zweiten mit Lodash

const classes = ["story-body-text", "story-content", "leading__100"]; 
const prefixes = ["alignment__", "font__", "leading__", "size__", "tracking__", "features__"]; 

ich Schleife müssen durch die classes Array und alle Werte entfernen, die nicht beginnen mit einem Wert aus dem prefixes Array. In dieser bestimmten Instanz sollte es ein neues Array mit dem folgenden Wert zurückgeben:

Vorschläge?

+0

Können Sie sich vorstellen, wie Sie das angehen könnten? Angenommen, Sie verwenden Lodash nicht und müssen dafür JavaScript schreiben. Könntest du ein neues Ausgabe-Array erstellen, dann durch das Array "classes" laufen lassen und für jedes Element in diesem Array alle "Präfixe" durchlaufen und sehen, ob eins passt, und wenn dies der Fall ist, drücke das aktuelle "classes" -Element an das Ausgangs-Array und brechen aus dieser inneren Schleife? –

+0

Heya Michael. Ich sehe, dass das die logische Herangehensweise ist, aber ich habe mich darum bemüht, zwei Arrays zu durchlaufen. Ich denke, es gibt nicht wirklich einen Weg, oder? –

+0

Ja, wenn Sie nach einer vollständigen Übereinstimmung suchen würden, könnten Sie ein Objekt mit jedem der Werte aus dem 'prefixes' Array erstellen (was in diesem Fall natürlich nicht' prefixes' heißen würde) und dann in Ihrem äußere Schleife würde man nur nach dem aktuellen 'classes'-Wert in diesem Objekt suchen. Das würde die verschachtelten Schleifen vermeiden und könnte in einem Fall mit vielen Elementen schneller sein. Aber mit der Präfix-Übereinstimmung wird alles, was Sie tun, auf die verschachtelten Schleifen (in der einen oder anderen Form) reduziert. –

Antwort

0
_.filter(classes, cls => _.some(prefixes, p => _.startsWith(cls, p)))