Saya memiliki array berikut.
var arr = [1,0,2];
Saya ingin menghapus elemen terakhir yaitu 2.
Saya menggunakan arr.slice(-1);
tetapi tidak menghapus nilai.
javascript
arrays
slice
Prithviraj Mitra
sumber
sumber
arr.slice(0,-1)
adalah solusi terbaik bagi sayasplice()
, kasus kedua:pop()
.Jawaban:
Gunakan sambungan (indeks, berapa banyak)
sumber
[1].splice(-1, 1)
=>[1]
[0,1,2] -> [2]
meninggalkan[0,1]
. Jika itu masalahnya, maka[arr.pop()]
akan melakukan trik.array.pop()
perubahan akan diubaharray
, sementaraslice(0, -1)
tidak. Pop tentu saja lebih cepat tetapi mungkin tidak selalu cocok untuk semua kebutuhan.Array.prototype.pop () oleh konvensi JavaScript.
sumber
Anda dapat melakukan ini menggunakan
.slice()
metode seperti:Ini demo:
alih-alih melakukan:
Ini demo:
Penjelasan:-
Sekarang sintaks dasar
Array.prototype.slice()
atau dalamslice()
metode singkat adalah:Sini,
yang
begin
parameter adalah nol berbasis indeks di mana ekstraksi dari array dimulai. Jadi, katakanlah berdasarkan contoh di atas jika kita melakukan sesuatu sepertiitu akan mengembalikan semua elemen array dari awal urutan dari posisi 0 dan itu
[1,0,2]
. Demikian pula halnya jika kita melakukannyaitu akan kembali
[0,2]
karena 0 ada di posisi 1 di sini dan semuanya setelah itu. Sekarang, dalam kasus Anda, Anda telah melewati indeks negatif yaitu,-1
sebagai parameter awal, yang menunjukkan offset dari akhir urutan. Jadi,slice(-1)
dalam kasus Anda mengekstrak elemen array yang terakhir dalam urutan dan itu adalah2
( seperti yang telah kita lihat di demo di atas ).Sekarang, mari kita bicara tentang
end
parameter dalamslice()
sintaksis metode di sini. Sekali lagi ini adalah indeks berbasis nol di mana ekstraksi dari array berakhir. Jadi, katakanlah kita memiliki array seperti: -dan kami hanya ingin mendapatkan
2,5,3
elemen dalam array. Sekarang, posisi2
dari mulai urutan adalah2
dan untuk elemen terakhir3
itu4
. Kita perlu mengakhiri ekstraksi di sini posisi 5, karena kita perlu mendapatkan elemen sebelum posisi itu. Jadi, kami hanya akan mengimplementasikanslice()
metode seperti di siniDalam kasus Anda, kami telah menerapkan
-1
sebagai parameter akhir, jadi kode kami sepertiSebagai indeks negatif,
end
menunjukkan offset dari akhir urutan. Jadi,slice(0,-1)
ekstrak elemen pertama melalui elemen kedua hingga terakhir dalam urutan. Jadi, kami mendapatkan output yang diinginkan. Kita juga bisa sukakita akan mendapatkan output yang sama. Tapi, saya telah menggunakan di
-1
sini sebagai lebih mudah diimplementasikan bahkan untuk array yang panjang sepertiJika Anda hanya ingin menghapus elemen terakhir, Anda tidak ingin duduk & menghitung posisi 9 terakhir di sini dan yang suka
arr.slice(0, 22)
. Anda kemudian dapat menerapkan logika indeks negatif di sini & lakukanSemoga ini bisa membantu!
sumber
arr
tetapi mengembalikan array baru yang mengecualikan item terakhir. Seperti yang dikatakan dokumen Mozilla: "Metode slice () mengembalikan salinan dangkal dari sebagian array ke objek array baru.".arr.slice(0, -1)
adalah jawaban terbaik.belajar dengan contoh:
sumber
Anda perlu melakukan ini karena
slice
tidak mengubah array asli.Jika Anda ingin mengubah array asli, Anda dapat menggunakan
splice
:atau
pop
:sumber
Saya akan mempertimbangkan
.pop()
untuk menjadi solusi yang paling 'benar', namun, kadang-kadang mungkin tidak berfungsi karena Anda perlu menggunakan array tanpa elemen terakhir di sana ...Dalam hal ini Anda mungkin ingin menggunakan yang berikut, itu akan kembali
[1,2,3]
sementara
.pop()
akan kembali4
:yang mungkin tidak diinginkan ...
Semoga ini menghemat waktu Anda.
sumber
Ada fungsi untuk itu, penjelasannya di sini :
sumber
Anda bisa menggunakan,
arr.pop()
Ini menghapus entri terakhir dari array.
sumber
Cukup gunakan yang berikut ini untuk kasus penggunaan Anda:
Hanya sebuah catatan. Ketika Anda menjalankan
pop()
fungsi meskipun baris mengembalikan item muncul, array asli dipengaruhi dan elemen muncul dihapus.sumber
Anda dapat melakukannya dengan dua cara menggunakan
splice()
:arr.splice(-1,1)
arr.splice(arr.length-1,1)
splice(position_to_start_deleting, how_many_data_to_delete)
membutuhkan dua parameter.position_to_start_deleting
: Indeks berbasis nol dari mana akan mulai dihapus.how_many_data_to_delete
: Dari indeks yang ditunjukkan, berapa banyak data berturut-turut harus dihapus.Anda juga dapat menghapus elemen terakhir menggunakan
pop()
sebagaipop()
menghapus elemen terakhir dari beberapa array.Menggunakan
arr.pop()
sumber
arr.slice(-1)
akan mengembalikan salinan elemen terakhir array, tetapi membiarkan array asli tidak dimodifikasi.Untuk menghapus yang terakhir
n
elemen dari array, gunakanarr.splice(-n)
(perhatikan "p" dalam "splice"). Nilai kembali akan menjadi array baru yang mengandung elemen yang dihapus.Lebih sederhana lagi, untuk
n == 1
, gunakanval = arr.pop()
sumber
// menghapus elemen terakhir // perlu memeriksa apakah arr.length> 0
sumber
sumber
Perlu dicatat bahwa
slice
keduanya akan mengembalikan array baru , sedangkan.pop()
dan.splice()
akan mengubah yang sudah ada array yang .Jika Anda suka menangani koleksi data dengan gaya perintah dirantai, Anda pasti ingin tetap menggunakannya
slice
sesuatu seperti ini.Sebagai contoh:
Mungkin memerlukan lebih banyak kekacauan, dan manajemen variabel, untuk melakukan hal yang sama dengan "pop", karena tidak seperti
map
,filter
, dll, Anda tidak mendapatkan kembali array baru.Ini adalah hal yang sama
push
, yang menambahkan item ke akhir array. Anda mungkin lebih baikconcat
karena hal itu membuat Anda terus berjalan.sumber
splice (index, howmany) - Solusi ini terdengar bagus. Tapi ini banyak sekali hanya akan bekerja untuk indeks array positif. Untuk menghapus dua item terakhir atau tiga item, gunakan indeks itu sendiri.
Misalnya, sambatan (-2) untuk menghapus dua item terakhir. sambatan (-3) untuk menghapus tiga item terakhir.
sumber
Dengan Lodash Anda dapat menggunakan dropRight , jika Anda tidak tahu elemen mana yang dihapus:
sumber
sumber
2019 ECMA5 Solution:
Non destructive, generic, one-liner dan hanya membutuhkan copy & paste di akhir array Anda.
sumber
I would like to remove the last element
. Itu membutuhkan operasi destruktif / bermutasi pada array asli.katakan kamu punya
var arr = [1,0,2]
arr.splice(-1,1)
akan kembali kepada Andaarray [1,0];
sementaraarr.slice(-1,1)
akan kembali kepada Andaarray [2];
sumber
Ini cara yang baik untuk menghapus item terakhir:
Detail sambatan sebagai berikut:
sambatan (startIndex, jumlah sambatan)
sumber
Output akan menjadi: Array [0,1,2,3,4,5] . Ini akan memungkinkan Anda untuk menyimpan jumlah elemen array yang sama saat Anda mendorong nilai baru.
sumber
Pendekatan lain adalah memfilter berdasarkan indeks:
Catatan:
filter()
membuat array baru, tidak mengubah yang sudah ada.sumber
Jika Anda ingin menghapus item n dari ujung array di javascript, Anda dapat dengan mudah menggunakan:
sumber