Tôi cần phải thiết lập một tên thuộc tính đối tượng JS một cách linh hoạt.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Kết quả sẽ là:
data = {
1name: 'name1'
2name: 'name1'
}
Tôi cần phải thiết lập một tên thuộc tính đối tượng JS một cách linh hoạt.
for(i=1; i<3; i++) {
var key = i+'name';
data = {
key : 'name1',
}
}
Kết quả sẽ là:
data = {
1name: 'name1'
2name: 'name1'
}
Câu trả lời:
var jsonVariable = {};
for(var i=1; i < 3; i++) {
jsonVariable[i + 'name'] = 'name' + i;
}
Bạn sẽ phải sử dụng []ký hiệu để thiết lập các phím động.
var jsonVariable = {};
for(i=1; i<3; i++) {
var jsonKey = i+'name';
jsonVariable[jsonKey] = 'name1';
}
Bây giờ trong ES6, bạn có thể sử dụng cú pháp đối tượng theo nghĩa đen để tạo các khóa đối tượng một cách linh hoạt, chỉ cần bọc biến trong []
var key = i + 'name';
data = {
[key] : 'name1',
}
Với ECMAScript 6, bạn có thể sử dụng tên thuộc tính biến với cú pháp bằng chữ của đối tượng, như sau:
var keyName = 'myKey';
var obj = {
[keyName]: 1
};
obj.myKey;//1
Cú pháp này có sẵn trong các trình duyệt mới hơn sau đây:
Cạnh 12+ (Không hỗ trợ IE), FF34 +, Chrome 44+, Opera 31+, Safari 7.1+
( https:// Khangax.github.io/compat-table/es6/ )
Bạn có thể thêm hỗ trợ cho các trình duyệt cũ hơn bằng cách sử dụng bộ chuyển mã như babel . Thật dễ dàng để dịch mã toàn bộ một dự án nếu bạn đang sử dụng một bộ đóng gói mô-đun như rollup hoặc webpack .
Sử dụng một biến làm khóa đối tượng
let key = 'myKey';
let data = {[key] : 'name1'; }
Không quan trọng là biến đến từ đâu. Điều chính chúng ta có một ... Đặt tên biến giữa các dấu ngoặc vuông "[..]".
var optionName = 'nameA';
var JsonVar = {
[optionName] : 'some value'
}
Dọc theo dòng nhận xét của Sainath SR ở trên, tôi có thể đặt tên thuộc tính đối tượng js từ một biến trong Tập lệnh Google Apps (chưa hỗ trợ ES6) bằng cách xác định đối tượng sau đó xác định khóa / giá trị khác bên ngoài đối tượng:
var salesperson = ...
var mailchimpInterests = {
"aGroupId": true,
};
mailchimpInterests[salesperson] = true;