Saya memiliki objek yang menyimpan lansiran dan beberapa informasi tentangnya:
var alerts = {
1: { app: 'helloworld', message: 'message' },
2: { app: 'helloagain', message: 'another message' }
}
Selain itu, saya memiliki variabel yang mengatakan berapa banyak peringatan alertNo
,. Pertanyaan saya adalah, ketika saya pergi untuk menambahkan lansiran, apakah ada cara untuk menambahkan lansiran ke alerts
objek?
javascript
Steve Gattuso
sumber
sumber
Jawaban:
Bagaimana dengan menyimpan lansiran sebagai rekaman dalam array alih-alih properti satu objek?
Dan kemudian untuk menambahkannya, cukup gunakan
push
:sumber
alerts[3] = { app: 'hello3', message: 'message 3' }
. Dengan ini Anda dapat mengakses pesan dengan id:alerts[2] => { app: 'helloworld', message: 'message' }
. Mendapatkan panjangnya berarti:Object.keys(alerts).length
(bit itu lebih mudah dengan array)jQuery
$.extend(obj1, obj2)
akan menggabungkan 2 objek untuk Anda, tetapi Anda harus benar-benar menggunakan array.sumber
Anda dapat melakukan ini dengan Object.assign () . Kadang-kadang Anda membutuhkan array, tetapi ketika bekerja dengan fungsi yang mengharapkan objek JSON tunggal - seperti panggilan OData - saya menemukan metode ini lebih sederhana daripada membuat array hanya untuk membongkar itu.
EDIT: Untuk membahas komentar tentang mendapatkan kunci berikutnya, Anda bisa mendapatkan array kunci dengan fungsi Object.keys () - lihat jawaban Vadi untuk contoh penambahan kunci. Demikian pula, Anda bisa mendapatkan semua nilai dengan Object.values () dan pasangan kunci-nilai dengan Object.entries () .
sumber
Seperti jawaban lain yang ditunjukkan, Anda mungkin merasa lebih mudah untuk bekerja dengan array.
Jika tidak:
Cobalah:
https://jsbin.com/yogimo/edit?js,console
sumber
while(alerts[size]) size++;
Dan mungkin mengganti namasize
menjadinewId
.Anda dapat menggunakan spread syntax sebagai berikut ..
sumber
Sekarang dengan ES6 kami memiliki operator penyebaran yang sangat kuat (... Objek) yang dapat membuat pekerjaan ini sangat mudah. Itu bisa dilakukan sebagai berikut:
Itu dia. Ini akan menambahkan kunci yang Anda inginkan. Semoga ini membantu!!
sumber
Anda harus benar-benar pergi dengan array saran peringatan, tetapi jika tidak menambahkan ke objek yang Anda sebutkan akan terlihat seperti ini:
Tetapi karena Anda tidak boleh menggunakan angka literal sebagai nama mengutip semuanya dan ikuti
atau Anda dapat membuatnya menjadi array objek.
Mengakses sepertinya
sumber
Apakah Anda memiliki kemampuan untuk mengubah struktur paling luar menjadi sebuah array? Jadi akan terlihat seperti ini
Jadi ketika Anda perlu menambahkan satu, Anda bisa mendorongnya ke array
Kemudian Anda memiliki indeks berbasis nol bawaan untuk cara penghitungan kesalahan.
sumber
Lebih mudah dengan ES6:
sumber
Sebagai alternatif, dalam ES6, sintaksis penyebaran dapat digunakan.
${Object.keys(alerts).length + 1}
kembali berikutnyaid
untuk lansiran.sumber
Maaf, saya tidak dapat mengomentari jawaban Anda karena reputasi saya! ... jadi, jika Anda ingin mengubah struktur objek Anda , Anda harus melakukan seperti yang dikatakan Thane Plummer, tetapi sedikit trik jika Anda tidak peduli di mana untuk meletakkan item: itu akan dimasukkan pada posisi pertama jika Anda tidak menentukan nomor untuk penyisipan.
Ini luar biasa jika Anda ingin melewatkan objek Json misalnya ke panggilan fungsi mongoDB dan memasukkan kunci baru di dalam kondisi yang Anda terima. Dalam hal ini saya akan memasukkan item myUid dengan beberapa info dari variabel di dalam kode saya:
sumber
[Javascript] Setelah sedikit jiggery pokery, ini berhasil bagi saya:
Masalah yang saya perlu selesaikan adalah bahwa saya mungkin memiliki sejumlah acara dan mereka semua akan memiliki nama yang sama: LastPostedDateTime semua yang berbeda adalah tanggal dan waktu.
sumber
Coba ini:
Berfungsi cukup baik, itu akan menambahkannya ke awal array.
sumber