Saya memiliki berbagai objek seperti:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
Bagaimana cara menghapus yang spesifik berdasarkan propertinya?
mis. Bagaimana cara saya menghapus objek array dengan 'uang' sebagai properti bidang?
javascript
jquery
arrays
object
properties
imperium2335
sumber
sumber
filter()
hanya tersedia untuk Internet Explorer 9+filter()
membuat array baru, yang boleh jika Anda dapat menetapkan kembali variabel dan tahu bahwa tidak ada area kode lain yang memiliki referensi untuk itu. Ini tidak akan berfungsi jika Anda secara khusus perlu memodifikasi objek array asli.Iterasi melalui array, dan
splice
keluar yang tidak Anda inginkan. Untuk penggunaan yang lebih mudah, beralihlah ke belakang sehingga Anda tidak harus memperhitungkan sifat langsung dari array:sumber
Katakanlah Anda ingin menghapus objek kedua dengan properti bidang itu.
Dengan ES6 semudah ini.
sumber
splice
mengubah array asli, jadi nilai yang Anda dapatkan kembali adalah item yang dihapus, tetapi jika Anda melihatmyArray
item itu nanti akan hilang.Anda dapat menggunakan findIndex lodash untuk mendapatkan indeks elemen tertentu dan kemudian menggunakannya.
Memperbarui
Anda juga dapat menggunakan ES6's findIndex ()
sumber
myArray
sini adalah berbagai objek.Berikut opsi lain menggunakan jQuery grep. Lewati
true
sebagai parameter ketiga untuk memastikan grep menghapus item yang cocok dengan fungsi Anda.Jika Anda sudah menggunakan jQuery maka tidak ada shim yang diperlukan, yang bisa berguna sebagai lawan menggunakan
Array.filter
.sumber
Dalam ES6, hanya satu baris.
:)
sumber
Berikut ini adalah kode jika Anda tidak menggunakan jQuery. Demo
Anda juga dapat menggunakan pustaka garis bawah yang memiliki banyak fungsi.
Underscore adalah pustaka sabuk utilitas untuk JavaScript yang menyediakan banyak dukungan pemrograman fungsional
sumber
Elemen adalah objek dalam array. Parameter ke-3
true
berarti akan mengembalikan array elemen yang gagal logika fungsi Anda,false
berarti akan mengembalikan array elemen yang gagal logika fungsi Anda.sumber
Berdasarkan beberapa komentar di atas di bawah ini adalah kode cara menghapus objek berdasarkan nama kunci dan nilai kunci
sumber
Menggunakan perpustakaan lodash :
sumber
Solusi jAndy mungkin yang terbaik, tetapi jika Anda tidak bisa mengandalkan filter, Anda bisa melakukan sesuatu seperti:
sumber
Menggunakan perpustakaan lodash itu sederhana seperti ini
sumber