Angenommen, ich habe ein Array, das so aussieht:
var playlist = [
{artist:"Herbie Hancock", title:"Thrust"},
{artist:"Lalo Schifrin", title:"Shifting Gears"},
{artist:"Faze-O", title:"Riding High"}
];
Wie kann ich ein Element an eine andere Position verschieben?
Ich möchte zum Beispiel {artist:"Lalo Schifrin", title:"Shifting Gears"}
zum Ende gehen.
Ich habe versucht, Spleiß wie folgt zu verwenden:
var tmp = playlist.splice(2,1);
playlist.splice(2,0,tmp);
Aber es funktioniert nicht.
javascript
arrays
sorting
Wurlitzer
quelle
quelle
Antworten:
Die Syntax von
Array.splice
lautet:Wo:
Dies bedeutet, dass
splice()
je nach übergebenen Argumenten Elemente entfernt, Elemente hinzugefügt oder Elemente in einem Array ersetzt werden können.Beachten Sie, dass ein Array der entfernten Elemente zurückgegeben wird.
Etwas Nettes und Generisches wäre:
Dann benutze einfach:
Diagramm:
quelle
Wenn Sie die Indizes kennen, können Sie die Elemente mit einer einfachen Funktion wie dieser einfach austauschen:
Array-Indizes sind nur Eigenschaften des Array-Objekts, sodass Sie seine Werte austauschen können.
quelle
Hier ist eine unveränderliche Version für diejenigen, die interessiert sind:
quelle
Ändern Sie 2 als den ersten Parameter im Spleißaufruf, wenn Sie das Element entfernen:
quelle
Mit ES6 können Sie so etwas tun:
quelle
Sie können jederzeit die Sortiermethode verwenden, wenn Sie nicht wissen, wo sich der Datensatz derzeit befindet:
quelle
return +(a.artist == "Lalo Schifrin")
EDIT: Bitte überprüfen Sie Andys Antwort da seine Antwort zuerst kam und dies nur eine Erweiterung seiner ist
Ich weiß, dass dies eine alte Frage ist, aber ich denke, es lohnt sich, sie aufzunehmen
Array.prototype.sort()
.Hier ist ein Beispiel von MDN zusammen mit dem Link
Zum Glück funktioniert es nicht nur mit Zahlen:
Mir ist aufgefallen, dass Sie sie mit Vornamen bestellen:
Beachten Sie, dass Sie, wenn Sie sie nach Nachnamen bestellen möchten, entweder einen Schlüssel für beide
first_name
& haben müssenlast_name
oder eine regex Magie tun, was ich nicht tun kann , XDHoffentlich hilft das :)
quelle
Versuche dies:
quelle
Wenn Sie immer nur ein Element von einer beliebigen Position an das Ende des Arrays verschieben möchten, sollte dies funktionieren:
Wenn Sie mehrere Elemente von einer beliebigen Position zum Ende verschieben möchten, haben Sie folgende Möglichkeiten:
Wenn Sie mehrere Elemente von einer beliebigen Position an eine beliebige Position verschieben möchten, versuchen Sie Folgendes:
quelle
Als einfache veränderbare Lösung können Sie Spleiß zweimal hintereinander aufrufen:
Andererseits könnte eine einfache unveränderliche Lösung Slice verwenden, da diese Methode eine Kopie eines Abschnitts aus dem ursprünglichen Array zurückgibt, ohne ihn zu ändern:
quelle
Ordnen Sie seine Arbeit auf diese Weise neu
Ich hoffe das wird funktionieren
quelle