Saya perlu menetapkan nama properti objek JS secara dinamis.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Hasilnya harus:
data = {
1name: 'name1'
2name: 'name1'
}
Saya perlu menetapkan nama properti objek JS secara dinamis.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Hasilnya harus:
data = {
1name: 'name1'
2name: 'name1'
}
Jawaban:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Anda harus menggunakan []notasi untuk mengatur kunci secara dinamis.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Sekarang di ES6 Anda dapat menggunakan sintaks literal objek untuk membuat kunci objek secara dinamis, cukup bungkus variabelnya []
var key = i + 'name';
data = {
[key] : 'name1',
}
Dengan ECMAScript 6, Anda bisa menggunakan nama properti variabel dengan sintaks literal objek, seperti ini:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Sintaks ini tersedia di browser yang lebih baru berikut:
Edge 12+ (Tanpa dukungan IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
Anda dapat menambahkan dukungan ke browser lama dengan menggunakan transpiler seperti babel . Sangat mudah untuk mengubah seluruh proyek jika Anda menggunakan bundler modul seperti rollup atau webpack .
Gunakan variabel sebagai kunci objek
let key = 'myKey';
let data = {[key] : 'name1'; }
Tidak masalah dari mana variabel tersebut berasal. Hal utama yang kita miliki satu ... Tetapkan nama variabel antara tanda kurung "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
Sejalan dengan komentar Sainath SR di atas, saya dapat menetapkan nama properti objek js dari variabel di Google Apps Script (yang belum mendukung ES6) dengan mendefinisikan objek lalu menentukan kunci / nilai lain di luar objek:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;