Mam następującą tablicę.
var arr = [1,0,2];
Chciałbym usunąć ostatni element, tj. 2.
Użyłem, arr.slice(-1);
ale nie usuwa wartości.
javascript
arrays
slice
Prithviraj Mitra
źródło
źródło
arr.slice(0,-1)
było dla mnie najlepszym rozwiązaniemsplice()
drugi przypadek:pop()
.Odpowiedzi:
Użyj splice (indeks, howmany)
źródło
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
pozostawiając za sobą[0,1]
. W takim przypadku[arr.pop()]
zrobi to samo.array.pop()
zmieni modyfikacjęarray
, aslice(0, -1)
nie zmieni. Pop jest oczywiście szybszy, ale nie zawsze może być odpowiedni dla wszystkich potrzeb.Array.prototype.pop () według konwencji JavaScript.
źródło
Możesz to zrobić przy użyciu
.slice()
metody takiej jak:Oto demo:
zamiast robić:
Oto demo:
Wyjaśnienie:-
Teraz podstawową składnią
Array.prototype.slice()
lub w skrócieslice()
jest:Tutaj,
begin
parametr zera wskaźnik na jakim wyrzutu z rozpoczęciem tablicy. Powiedzmy na podstawie powyższego przykładu, jeśli zrobimy coś takiegozwróci wszystkie elementy tablicy od początku sekwencji od pozycji 0 i to znaczy
[1,0,2]
. Podobnie, jeśli to zrobimypowróci,
[0,2]
ponieważ 0 jest tutaj na pozycji 1, a potem wszystko. Teraz w twoim przypadku minąłeś indeks ujemny, tj.-1
Jako parametr początkowy, który wskazuje przesunięcie od końca sekwencji. Tak więc,slice(-1)
w przypadku ekstraktów ostatni element tablicy w kolejności i to2
( jak widzieliśmy już w powyższym demo ).Teraz porozmawiajmy o
end
parametrze wslice()
składni metody tutaj. Jest to ponownie indeks zerowy, przy którym kończy się ekstrakcja z tablicy. Powiedzmy, że mamy tablicę typu: -i chcemy uzyskać tylko
2,5,3
elementy z tablicy. Teraz pozycja2
od początku sekwencji jest2
i dla ostatniego elementu3
jest4
. Będziemy musieli zakończyć ekstrakcję tutaj pozycję 5, ponieważ musimy zdobyć element przed tą pozycją. Tak więc po prostu zaimplementujemyslice()
tutaj metodę jakW twoim przypadku zaimplementowaliśmy
-1
jako parametr końcowy, więc nasz kod jest podobnyJako indeks ujemny
end
wskazuje przesunięcie od końca sekwencji. Wyodrębnia więcslice(0,-1)
pierwszy element od drugiego do ostatniego elementu w sekwencji. Otrzymujemy więc pożądaną wydajność. Możemy również zrobić jakotrzymamy taką samą wydajność. Ale użyłem
-1
tutaj, ponieważ jest łatwiejszy do wdrożenia, nawet dla długiej tablicyJeśli chcesz po prostu usunąć ostatni element, nie chcesz usiąść i obliczyć pozycji ostatnich 9 tutaj i zrobić to
arr.slice(0, 22)
. Następnie możesz po prostu zaimplementować logikę indeksu ujemnego tutaj i wykonajMam nadzieję, że to pomoże!
źródło
arr
ale zwraca nową tablicę, która wyklucza ten ostatni element. Jak mówią dokumenty Mozilli: „Metoda slice () zwraca płytką kopię części tablicy do nowego obiektu tablicy.”.arr.slice(0, -1)
jest najlepsza odpowiedź.ucz się na przykładzie:
źródło
Musisz to zrobić, ponieważ
slice
nie zmienia oryginalnej tablicy.Jeśli chcesz zmienić oryginalną tablicę, możesz użyć
splice
:lub
pop
:źródło
Uważam to za
.pop()
najbardziej „poprawne” rozwiązanie, jednak czasami może nie działać, ponieważ musisz użyć tablicy bez ostatniego elementu ...W takim przypadku możesz skorzystać z następujących opcji, funkcja zwróci
[1,2,3]
podczas gdy
.pop()
wróci4
:co może być niepożądane ...
Mam nadzieję, że to pozwoli Ci zaoszczędzić trochę czasu.
źródło
Jest na to funkcja, wyjaśnienie tutaj :
źródło
Możesz po prostu użyć
arr.pop()
Spowoduje to usunięcie ostatniego wpisu tablicy.
źródło
Po prostu skorzystaj z następujących opcji dla swojego przypadku użycia:
Tylko uwaga. Gdy wykonasz
pop()
funkcję, mimo że linia zwraca wyskakujący element, zachowana jest oryginalna tablica i usuwany jest wyskakujący element.źródło
Możesz to zrobić na dwa sposoby, używając
splice()
:arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
przyjmuje dwa parametry.position_to_start_deleting
: Indeks liczony od zera, od którego zacząć usuwanie.how_many_data_to_delete
: Ze wskazanego indeksu, ile kolejnych danych należy usunąć.Możesz także usunąć ostatni element, używając
pop()
aspop()
usuwa ostatni element z jakiejś tablicy.Posługiwać się
arr.pop()
źródło
arr.slice(-1)
zwróci kopię ostatniego elementu tablicy, ale pozostawi oryginalną tablicę niezmodyfikowaną.Aby usunąć ostatnie
n
elementy z tablicy, użyjarr.splice(-n)
(zwróć uwagę na „p” w „splice”). Zwrócona wartość będzie nową tablicą zawierającą usunięte elementy.Jeszcze prostsze w
n == 1
użyciuval = arr.pop()
źródło
// usuwa ostatni element // trzeba sprawdzić, czy arr. długość> 0
źródło
źródło
Warto zauważyć, że
slice
zarówno zwróci nową tablicę, jak.pop()
i.splice()
zmutuje istniejącą tablicę.Jeśli lubisz obsługiwać kolekcje danych w stylu łańcucha poleceń, naprawdę będziesz chciał się trzymać
slice
czegoś takiego.Na przykład:
To może wymagać dużo bardziej ingerować i zmienną zarządzania, do tego samego rodzaju rzeczy z „pop”, ponieważ w przeciwieństwie do
map
,filter
itp, nie dostaniesz nową tablicę plecy.Jest to ten sam rodzaj rzeczy
push
, który dodaje element na końcu tablicy. Lepiej może być,concat
ponieważ pozwala to utrzymać płynność.źródło
splice (index, howmany) - To rozwiązanie brzmi dobrze. Ale to howmany będzie działać tylko dla pozytywnego indeksu tablicy. Aby usunąć ostatnie dwa lub trzy elementy, użyj samego indeksu.
Na przykład połącz (-2), aby usunąć ostatnie dwa elementy. łączenie (-3) do usuwania ostatnich trzech przedmiotów.
źródło
Z Lodash możesz użyć dropRight , jeśli nie chcesz wiedzieć, które elementy zostały usunięte:
źródło
źródło
Rozwiązanie ECMA5 2019:
Nieniszczący, ogólny, jednowarstwowy i wymaga tylko kopiowania i wklejania na końcu tablicy.
źródło
I would like to remove the last element
. To wymaga niszczącej / mutującej operacji na oryginalnej tablicy.powiedz, że masz
var arr = [1,0,2]
arr.splice(-1,1)
wróci do ciebie,array [1,0];
aarr.slice(-1,1)
wróci do ciebiearray [2];
źródło
To dobry sposób na usunięcie ostatniego elementu:
Szczegóły splotu, jak następuje:
splice (startIndex, liczba splice)
źródło
Dane wyjściowe to: Array [0,1,2,3,4,5] . Pozwoli ci to zachować taką samą liczbę elementów tablicy, jak wpychasz nową wartość.
źródło
Innym podejściem jest filtrowanie na podstawie indeksu:
Uwaga:
filter()
tworzy nową tablicę, nie zmienia istniejącej.źródło
Jeśli chcesz usunąć n elementu z końca tablicy w javascript, możesz łatwo użyć:
źródło