Saya memiliki array yang terlihat seperti ini: var y = [1, 2, 3];
Saya ingin menghapus 2
dari array y
.
Bagaimana saya bisa menghapus nilai tertentu dari array menggunakan jQuery? Saya sudah mencoba pop()
tetapi itu selalu menghilangkan elemen terakhir.
Jawaban:
JSFIDDLE yang berfungsi
Anda dapat melakukan sesuatu seperti ini:
Hasil:
http://snipplr.com/view/14381/remove-item-from-array-with-jquery/
sumber
Dengan jQuery, Anda dapat melakukan operasi satu baris seperti ini:
Contoh: http://jsfiddle.net/HWKQY/
Menggunakan asli
.splice()
dan jQuery$.inArray()
.sumber
while
loop dan variabel sementara seperti ini:var found; while ((found = $.inArray(removeItem, y)) !== -1) y.splice(found, 1);
.indexOf()
daripada jQuery karena Anda dapat menggunakan indeks terakhir yang ditemukan sebagai titik awal untuk pencarian berikutnya, yang jauh lebih efisien daripada mencari seluruh array setiap waktu.var found=0; while ((found = y.indexOf(removeItem, found)) !== -1) y.splice(found, 1);
jQuery.filter
metode bermanfaat. Ini tersedia untukArray
objek.http://jsfiddle.net/emrefatih47/ar0dhvhw/
Dalam Ecmascript 6:
https://jsfiddle.net/emrefatih47/nnn3c2fo/
sumber
Anda dapat menggunakan underscore.js . Ini benar-benar membuat semuanya menjadi sederhana.
Dalam kasus Anda, semua kode yang harus Anda tulis adalah -
dan hasilnya adalah [1,3].
Ini mengurangi kode yang Anda tulis.
sumber
Bukan cara jQuery tapi ... Kenapa tidak menggunakan cara yang lebih sederhana. Hapus 'c' dari array berikut
Anda juga dapat menggunakan: (Catatan untuk diri sendiri: Jangan memodifikasi objek yang tidak Anda miliki )
Menambahkan lebih sederhana
a.push('c')
sumber
Hapus Item di Array
sumber
Contoh penggunaan
Untuk menggunakan fungsi prototipe ini, Anda perlu menempelkannya di kode Anda. Kemudian Anda bisa menerapkannya ke sembarang array dengan 'notasi titik':
sumber
i
ditimpa.Tidak ada cara asli untuk melakukan ini dalam Javascript. Anda bisa menggunakan perpustakaan atau menulis fungsi kecil sebagai gantinya: http://ejohn.org/blog/javascript-array-remove/
sumber
Anda dapat menggunakan .tidak berfungsi seperti ini:
sumber
searchValue
menjadi 4, jalankan kodenya, tidak ada masalah yang terdeteksi. Semua nilai masih ada. @ JulianKVersi saya dari jawaban user113716. Nya menghapus nilai jika tidak ada kecocokan yang ditemukan, yang tidak baik.
Ini sekarang menghapus 1 item jika kecocokan ditemukan, 0 jika tidak ada kecocokan yang ditemukan.
Bagaimana itu bekerja:
value
dalamarray
count
jumlah nilai mulaiindex
, jadi kami hanya ingincount
of1
sumber
sumber
Ada solusi sederhana dengan sambatan. Menurut sintaks sambatan W3School adalah sebagai berikut;
Diperlukan indeks . Bilangan bulat yang menentukan pada posisi apa untuk menambah / menghapus item, Gunakan nilai negatif untuk menentukan posisi dari akhir array
berapa banyak dibutuhkan. Jumlah item yang akan dihapus. Jika diatur ke 0, tidak ada item yang akan dihapus
item1, ..., itemX Opsional. Item baru yang akan ditambahkan ke array
Ingatlah itu, js berikut akan memunculkan satu atau lebih item yang cocok dari array yang diberikan jika ditemukan, jika tidak, tidak akan menghapus item terakhir dari array.
Atau
Jadi final harus terlihat seperti berikut
Semoga ini membantu.
sumber
sumber
Saya punya tugas serupa di mana saya perlu menghapus beberapa objek sekaligus berdasarkan properti dari objek dalam array.
Jadi setelah beberapa iterasi saya berakhir dengan:
sumber
Saya akan memperluas kelas Array dengan
pick_and_remove()
fungsi, seperti:Meskipun mungkin tampak sedikit bertele-tele, Anda sekarang dapat memanggil
pick_and_remove()
array yang Anda inginkan!Pemakaian:
Anda dapat melihat semua ini dalam aksi bertema pokemon di sini.
sumber
Anda kemudian dapat memanggil fungsi di mana saja dalam kode Anda.
Ini berfungsi dalam semua kasus dan menghindari masalah dalam metode di atas. Semoga itu bisa membantu!
sumber
Coba ini bekerja untuk saya
sumber
Jawaban kedua yang paling banyak dipilih di sini adalah pada jalur terdekat yang mungkin dengan metode jQuery satu-baris dari perilaku yang diinginkan OP, tetapi mereka tersandung di akhir kode mereka, dan memiliki kelemahan. Jika item Anda untuk dihapus sebenarnya tidak ada dalam array, item terakhir akan dihapus.
Beberapa telah memperhatikan masalah ini, dan beberapa telah menawarkan cara-cara untuk mencegahnya. Saya menawarkan metode terpendek, terbersih yang dapat saya temukan, dan saya telah berkomentar di bawah jawaban mereka untuk cara memperbaiki kode mereka sesuai dengan metode ini.
array x akan menghapus elemen "bye" dengan mudah, dan array y akan tersentuh.
Penggunaan argumen
$.inArray(removeItem,array)
sebagai argumen kedua benar-benar berakhir menjadi panjang untuk sambungan. Karena item tidak ditemukan, ini dievaluasi menjadiarray.splice(-1,-1);
, yang hanya akan menghasilkan tidak ada yang disambung ... semua tanpa harus menulis loop untuk ini.sumber
Untuk menghapus 2 dari array dengan aman menggunakan JavaScript vanilla:
Sumber polyfill: Mozilla
sumber
Hanya untuk menambah jawaban dari Sarfraz, belum ada yang terkejut membuatnya menjadi fungsi.
Gunakan jawaban dari ddagsan menggunakan metode .filter jika Anda memiliki nilai yang sama lebih dari satu kali dalam array Anda.
sumber