ฉันต้องการตั้งค่าชื่อคุณสมบัติวัตถุ JS แบบไดนามิก
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
ผลลัพธ์ควรเป็น:
data = {
1name: 'name1'
2name: 'name1'
}
ฉันต้องการตั้งค่าชื่อคุณสมบัติวัตถุ JS แบบไดนามิก
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
ผลลัพธ์ควรเป็น:
data = {
1name: 'name1'
2name: 'name1'
}
คำตอบ:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
คุณจะต้องใช้[]เครื่องหมายเพื่อตั้งค่าคีย์แบบไดนามิก
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
ตอนนี้ใน ES6 คุณสามารถใช้ไวยากรณ์ตัวอักษรของวัตถุเพื่อสร้างคีย์วัตถุแบบไดนามิกเพียงแค่ล้อมรอบตัวแปร []
var key = i + 'name';
data = {
[key] : 'name1',
}
ด้วย ECMAScript 6 คุณสามารถใช้ชื่อคุณสมบัติตัวแปรกับไวยากรณ์ตัวอักษรของวัตถุเช่นนี้:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
ไวยากรณ์นี้มีอยู่ในเบราว์เซอร์ที่ใหม่กว่าต่อไปนี้:
Edge 12+ (ไม่รองรับ IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https://kangax.github.io/compat-table/es6/ )
คุณสามารถเพิ่มการสนับสนุนเบราว์เซอร์รุ่นเก่าโดยใช้transpilerเช่นBabel มันเป็นเรื่องง่ายที่จะ transpile โครงการทั้งหมดถ้าคุณกำลังใช้โมดูล Bundler เช่นการยกเลิกหรือwebpack
นี่คือวิธีการตั้งค่าแบบไดนามิก
var jsonVariable = {};
for (var i = 1; i < 3; i++) {
var jsonKey = i + 'name';
jsonVariable[jsonKey] = 'name' + i;
}
มันไม่สำคัญว่าตัวแปรมาจากไหน สิ่งสำคัญที่เรามีหนึ่ง ... ตั้งชื่อตัวแปรระหว่างวงเล็บเหลี่ยม "[.. ]"
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
jsonVariable = {}
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1'
}
สิ่งนี้จะคล้ายกับ
jsonVariable = {
1name : 'name1'
2name : 'name1'
}
ตามความคิดเห็นของ Sainath SR ข้างบนฉันสามารถตั้งค่าชื่อคุณสมบัติวัตถุ js จากตัวแปรใน Google Apps Script (ซึ่งยังไม่รองรับ ES6) โดยการกำหนดวัตถุแล้วกำหนดคีย์ / ค่าอื่นนอกวัตถุ:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;