Powiedz, mam tablicę, która wygląda następująco:
var playlist = [
{artist:"Herbie Hancock", title:"Thrust"},
{artist:"Lalo Schifrin", title:"Shifting Gears"},
{artist:"Faze-O", title:"Riding High"}
];
Jak mogę przenieść element w inne miejsce?
Chcę przejść na przykład {artist:"Lalo Schifrin", title:"Shifting Gears"}
do końca.
Próbowałem użyć splotu, na przykład:
var tmp = playlist.splice(2,1);
playlist.splice(2,0,tmp);
Ale to nie działa.
javascript
arrays
sorting
Wurlitzer
źródło
źródło
Odpowiedzi:
Składnia
Array.splice
to:Gdzie:
Oznacza to, że
splice()
może być używany do usuwania elementów, dodawania elementów lub zamiany elementów w tablicy, w zależności od przekazanych argumentów.Zauważ, że zwraca tablicę usuniętych elementów.
Coś ładnego i ogólnego byłoby:
Następnie po prostu użyj:
Diagram:
źródło
Jeśli znasz indeksy, możesz łatwo zamienić elementy za pomocą prostej funkcji, takiej jak ta:
Indeksy tablic są po prostu właściwościami obiektu tablicy, więc możesz zamienić ich wartości.
źródło
Oto niezmienna wersja dla zainteresowanych:
źródło
Zmień 2 na 1 jako pierwszy parametr w wywołaniu połączenia podczas usuwania elementu:
źródło
Z ES6 możesz zrobić coś takiego:
źródło
Zawsze możesz użyć metody sortowania, jeśli nie wiesz, gdzie obecnie znajduje się rekord:
źródło
return +(a.artist == "Lalo Schifrin")
EDYCJA: Sprawdź odpowiedź Andy'ego ponieważ jego odpowiedź była pierwsza i jest to wyłącznie jego rozszerzenie
Wiem, że to stare pytanie, ale myślę, że warto je uwzględnić
Array.prototype.sort()
.Oto przykład z MDN wraz z linkiem
Na szczęście działa nie tylko z liczbami:
Zauważyłem, że zamawiasz je po imieniu:
zwróć uwagę, że jeśli chcesz zamówić je według nazwiska, musisz mieć klucz do obu
first_name
&last_name
lub użyć magii wyrażeń regularnych, czego nie mogę zrobić XDMam nadzieję, że to pomoże :)
źródło
Spróbuj tego:
źródło
Jeśli chcesz przenieść tylko jeden element z dowolnej pozycji na koniec tablicy, powinno to zadziałać:
Jeśli chcesz przenieść wiele elementów z dowolnej pozycji na koniec, możesz:
Jeśli chcesz przenieść wiele elementów z dowolnej pozycji do dowolnej pozycji, spróbuj:
źródło
Jako proste, zmienne rozwiązanie możesz wywołać splice dwa razy z rzędu:
Z drugiej strony, proste niezmienne rozwiązanie mogłoby użyć slice, ponieważ ta metoda zwraca kopię sekcji z oryginalnej tablicy bez jej zmiany:
źródło
Zmień kolejność jego pracy w ten sposób
Mam nadzieję, że to zadziała
źródło