Ich habe ein JavaScript-Array wie:
%Vor%Ich möchte nur die Elemente des Arrays abrufen, die nach 2 aufeinanderfolgenden Vorkommen eines bestimmten Elements kommen.
d. Im obigen Array möchte ich alle Elemente abrufen, die nach dem consequent 'x', 'x'
Meine Ausgabe sollte also lauten:
%Vor%Ich habe eine Lösung wie:
%Vor%Dies erfüllt meine Bedürfnisse, aber es ist nicht so allgemein.
Für z. Wenn ich nach 3 aufeinanderfolgenden Vorkommnissen suchen muss, muss ich wiederum eine Bedingung innerhalb von if für myArray[i+2] == 'x'
und so weiter hinzufügen.
Könnte jemand eine bessere Möglichkeit bieten, die Elemente zu holen?
Ein allgemeiner direkter Ansatz für jeden vergleichbaren Inhalt.
Sie können eine zusätzliche Funktion isItGood
wie folgt erstellen:
Wenn ich das in Scala anstelle von JavaScript schreiben müsste, könnte ich es einfach in einer Zeile machen.
myArray.sliding(3).filter(l => l(0) == 'x' && l(1) == 'x').map(l => l(2))
Ich denke, ich könnte es in JS genauso machen, wenn ich die Schiebefunktion selbst implementiere. z.B.
%Vor%Der einzige Nachteil ist, dass dies langsamer abläuft als ein iterativer Ansatz. Aber das ist nur bei sehr großen Arrays wichtig.
Verwenden Sie for
loop mit Variablen, die auf den vorherigen Index, den aktuellen Index, den nächsten Index des Arrays
Tags und Links javascript arrays