Verschiebe Array nach rechts in Javascript [duplizieren]

7

Ich habe dieses Array:

%Vor%

Ich muss es an zwei Stellen nach rechts verschieben, wie

%Vor%

Dies funktioniert für die linke Verschiebung:

%Vor%

Ich bekomme:

%Vor%

Aber ich weiß nicht, wie man das richtig macht ...

    
mike44 19.04.2013, 04:35
quelle

3 Antworten

15

Verschiebung nach rechts zu N positions == Verschiebung nach links zu array.length - N positions.

Um also nach rechts auf 2 Positionen für Ihr Array zu wechseln, verschieben Sie es einfach nach links auf 3 Positionen.

Es gibt keinen Grund, eine andere Funktion zu implementieren, sobald Sie bereits eine Funktion haben. Plus-Lösungen mit shift/unshift/pop in einer Schleife sind kaum so effizient wie splice + concat

    
zerkms 19.04.2013, 04:38
quelle
9

Sie können .pop() verwenden, um das letzte Element und .unshift() an den Anfang zu setzen:

%Vor%     
gilly3 19.04.2013 04:38
quelle
5

Mit .concat() erstellen Sie ein neues Array und ersetzen das alte. Das Problem dabei ist, dass wenn Sie andere Verweise auf das Array haben, diese nicht aktualisiert werden, so dass sie immer noch die unverschobene Version enthalten.

Um eine Verschiebung nach rechts vorzunehmen und das vorhandene Array tatsächlich zu mutieren, können Sie Folgendes tun:

%Vor%

Die Methode unshift() ist variadisch, und .apply lässt Sie mehrere Argumente übergeben, die in einer Array-ähnlichen Sammlung gespeichert sind.

Das .splice() mutiert also das Array, indem es die letzten beiden entfernt und sie zurückgibt, und .unshift() mutiert das Array, indem es die von .splice() an den Anfang zurückgegebenen hinzufügt.

Die linke Verschiebung würde ähnlich wie die rechte verschoben werden, da .push() ebenfalls variabel ist:

%Vor%     
user1106925 19.04.2013 05:14
quelle

Tags und Links