Saya menarik item dari DOM dengan jQuery dan ingin mengatur properti pada objek menggunakan id
elemen DOM.
Contoh
const obj = {}
jQuery(itemsFromDom).each(function() {
const element = jQuery(this)
const name = element.attr('id')
const value = element.attr('value')
// Here is the problem
obj.name = value
})
Jika itemsFromDom
menyertakan elemen dengan id
"myId", saya ingin obj
memiliki properti bernama "myId". Di atas memberi saya name
.
Bagaimana cara saya memberi nama properti suatu objek menggunakan variabel menggunakan JavaScript?
javascript
jquery
object
syntax
Todd R
sumber
sumber
Jawaban:
Anda dapat menggunakan sintaks yang setara ini:
sumber
Dengan ECMAScript 2015 Anda dapat melakukannya secara langsung dalam deklarasi objek menggunakan notasi braket:
Di mana
key
segala jenis ekspresi (misalnya variabel) yang mengembalikan nilai:sumber
obj[name]=value
ketika saya bisa menggunakan saran Anda sebagai gantinyaAnda bahkan dapat membuat Daftar objek seperti ini
sumber
Ada dua notasi yang berbeda untuk mengakses properti objek
Notasi dot cepat dan mudah tetapi Anda harus menggunakan nama properti yang sebenarnya secara eksplisit. Tidak ada substitusi, variabel, dll.
Notasi braket terbuka berakhir. Ini menggunakan string tetapi Anda dapat menghasilkan string menggunakan kode js hukum. Anda dapat menentukan string sebagai literal (meskipun dalam kasus ini notasi titik akan lebih mudah dibaca) atau menggunakan variabel atau menghitung dengan cara tertentu.
Jadi, ini semua mengatur properti myObj bernama prop1 ke nilai Halo :
Perangkap:
tl; dnr : Jika Anda ingin menghitung atau merujuk kunci, Anda harus menggunakan notasi braket . Jika Anda menggunakan kunci secara eksplisit, maka gunakan notasi titik untuk kode yang jelas sederhana.
Catatan: ada beberapa jawaban lain yang baik dan benar, tetapi saya pribadi menemukan mereka agak singkat berasal dari keakraban dengan JS on-the-fly quirkiness. Ini mungkin bermanfaat bagi sebagian orang.
sumber
Dengan lodash, Anda dapat membuat objek baru seperti ini _.set :
Atau Anda dapat mengatur ke objek yang ada seperti ini:
Anda harus berhati-hati jika Anda ingin menggunakan titik (".") Di jalur Anda, karena lodash dapat mengatur hierarki, misalnya:
sumber
Pertama kita perlu mendefinisikan kunci sebagai variabel dan kemudian kita perlu menetapkan kunci sebagai objek., Misalnya
sumber
Dengan munculnya ES2015 Object.assign dan nama properti yang dikomputasi, kode OP bermuara pada:
sumber
Jika Anda ingin menambahkan bidang ke objek secara dinamis, cara termudah untuk melakukannya adalah sebagai berikut:
Ini akan membuat objek data yang memiliki bidang berikut:
sumber
Jika Anda memiliki objek, Anda dapat membuat array kunci, dari memetakan melalui, dan membuat objek baru dari kunci objek sebelumnya, dan nilai-nilai.
sumber
ajavascript memiliki dua jenis anotasi untuk mengambil properti Objek javascript:
Obj = {};
1) (.) Anotasi mis. Obj.id ini hanya akan berfungsi jika objek sudah memiliki properti dengan nama 'id'
2) ([]) anotasi misalnya. Obj [id] di sini jika objek tidak memiliki properti dengan nama 'id', itu akan membuat properti baru dengan nama 'id'.
jadi untuk contoh di bawah ini:
Properti baru akan selalu dibuat ketika Anda menulis Obj [nama]. Dan jika properti sudah ada dengan nama yang sama itu akan menimpanya.
sumber
Terkait dengan subjek, tidak khusus untuk jquery. Saya menggunakan ini dalam proyek reaksi EC6, mungkin membantu seseorang:
NB: Harap perhatikan karakter kutipan.
sumber
objectname.newProperty = value;
sumber
sumber