Abrufen von JavaScript-Array-Elementen nach dem aufeinanderfolgenden Auftreten eines Elements

8

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'

kommen

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?

    
Chittaranjan Sahoo 16.01.2016, 19:47
quelle

7 Antworten

5

Der funktionale Weg wäre die Rekursion. Mit einem ES6-Spread können Sie die Knappheit einer wirklich "funktionalen" Sprache ziemlich gut nachahmen: -)

%Vor%     
Simon H 16.01.2016, 20:00
quelle
3

Ein allgemeiner direkter Ansatz für jeden vergleichbaren Inhalt.

%Vor%
    
Nina Scholz 16.01.2016 20:07
quelle
2

Sie können die folgende Logik versuchen

%Vor%
    
nikhil 16.01.2016 19:56
quelle
2

Hier ist eine einfache iterative Lösung. Wir pflegen ein Array consecutive von aufeinanderfolgenden Elementen. Wenn dieses Array die Länge 2 erreicht, wird das nächste Element gedruckt und consecutive wird zurückgesetzt.

%Vor%     
Nicholas 16.01.2016 20:08
quelle
2

Sie können eine zusätzliche Funktion isItGood wie folgt erstellen:

%Vor% %Vor%
    
ROMANIA_engineer 16.01.2016 19:56
quelle
2

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.

    
SpiderPig 16.01.2016 21:02
quelle
2

Verwenden Sie for loop mit Variablen, die auf den vorherigen Index, den aktuellen Index, den nächsten Index des Arrays

verweisen

%Vor%
    
guest271314 16.01.2016 20:19
quelle

Tags und Links