JavaScriptTablice

Array.prototype.toReversed()

Zwraca nową tablicę z elementami w odwrotnej kolejności, bez zmiany oryginału.

Zwraca
Nową tablicę z elementami w odwrotnej kolejności.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const levels = [1, 2, 3, 4]
const reversed = levels.toReversed()

console.log(reversed)
console.log(levels)
Konsola
[4, 3, 2, 1]
[1, 2, 3, 4]

Definicja i zastosowanie

#

Metoda toReversed() tworzy kopię tablicy z elementami ułożonymi od ostatniego do pierwszego. W przeciwieństwie do reverse() nie rusza oryginału, więc możesz bezpiecznie odwracać dane, z których korzysta inna część programu.

Należy do rodziny metod kopiujących, dodanych w standardzie ES2023 razem z toSorted(), toSpliced() i with(). Każda z nich ma mutujący odpowiednik, ale zamiast zmieniać istniejącą tablicę, zwraca nową.

Kopia jest płytka: obiekty w środku nie są klonowane, więc obie tablice wskazują na te same obiekty. Puste miejsca w tablicach rzadkich zamieniają się w kopii na undefined.

Składnia

#
Składnia
array.toReversed()

Więcej przykładów

#
reverse() a toReversed()
JavaScript
const history = ['Lekcja 1', 'Lekcja 2', 'Lekcja 3']

const newestFirst = history.toReversed()
console.log(newestFirst[0])
console.log(history[0])

history.reverse()
console.log(history[0])
Konsola
Lekcja 3
Lekcja 1
Lekcja 3
Kopia jest płytka
JavaScript
const students = [{ name: 'Ania' }, { name: 'Kuba' }]
const reversed = students.toReversed()

reversed[0].name = 'Jakub'
console.log(students[1].name)
console.log(reversed === students)
Konsola
Jakub
false

Tablice są różne, ale obiekt Kuby jest w obu ten sam. Zmianę jego pola w kopii widać więc także w oryginale.

Obsługa przeglądarek

#

Szeroko dostępne · od 2023 roku

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • W stanie komponentów React używaj toReversed() zamiast reverse(). Zmiana oryginalnej tablicy w stanie to częsta przyczyna widoku, który się nie odświeża.
  • W starszym kodzie ten sam efekt dają [...array].reverse() i array.slice().reverse().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.