Có cách nào để sử dụng các khóa biến trong một đối tượng JavaScript theo nghĩa đen không?


81

Tôi có mã như thế này.

var key = "anything";   
var object = {   
    key: "key attribute"  
};

Tôi muốn biết nếu có một cách để thay thế điều đó keybằng "bất cứ điều gì".

giống

var object = {  
    "anything": "key attribute"     
};

Câu trả lời:


196

Trong ES6, sử dụng tên thuộc tính được tính toán .

const key = "anything";   

const object = {   
    [key]: "key attribute"
//  ^^^^^  COMPUTED PROPERTY NAME
};

Lưu ý các dấu ngoặc vuông xung quanh key. Bạn thực sự có thể chỉ định bất kỳ biểu thức nào trong dấu ngoặc vuông, không chỉ một biến.


5
cũng hoạt động trên chrome. đơn giản nhất và tốt nhất-est câu trả lời (y)
Anum Sheraz

1
Đó là tốt cho ES6 nhưng những gì về phiên bản cũ (IE11 sẽ sụp đổ vào mã ở trên)
pascalzon

117

Đúng. Bạn có thể dùng:

var key = "anything";
var json = { };
json[key] = "key attribute";

Hoặc đơn giản là sử dụng phương pháp thứ hai nếu bạn có sẵn các giá trị khi viết chương trình.


15

Trên Javascript hiện đại (ECMAScript 6), bạn có thể sắp xếp biến bằng dấu ngoặc vuông:

var key = "anything";

var json = {
    [key]: "key attribute"
};

12

Cái này cần phải dùng mẹo:

var key = "anything";

var json = {};

json[key] = "key attribute";

Nhưng anh ấy muốn làm điều này trong ngữ cảnh của một đối tượng theo nghĩa đen.

4

Giải pháp:

var key = "anything";

var json = {};

json[key] = "key attribute";

Vui lòng giải thích giải pháp của bạn.
Martin Zabel

1
@MartinZabel Dường như không cần giải thích.

-2

Đóng cửa hoạt động tốt cho điều này.

function keyValue(key){
  return function(value){
    var object = {};
    object[key] = value;
    return object;
  }
}

var key = keyValue(key);
key(value);

Đóng cửa chỉ là cơ chế được sử dụng ở đây. Khái niệm là HOF.

1
HOF = Chức năng đơn hàng cao hơn.
Rick

-2

Gần đây, cần một giải pháp cách đặt cookie chuyển các giá trị khóa json động. Sử dụng https://github.com/js-cookie/js-cookie#json , bạn có thể thực hiện dễ dàng. Muốn lưu trữ từng giá trị tùy chọn đã chọn của người dùng trong cookie, vì vậy nó không bị mất trong trường hợp tab hoặc trình duyệt tắt.

var json = { 
        option_values : {}
    };
    $('option:selected').each(function(index, el) {
        var option = $(this);
        var optionText = option.text();
        var key = 'option_' + index;
        json.option_values[key] = optionText;
        Cookies.set('option_values', json, { expires: 7 } );
    }); 

Sau đó, bạn có thể truy xuất từng giá trị khóa cookie trên mỗi lần tải trang bằng cách sử dụng

Cookies.getJSON('option_values');

-3

Chà, không có cách nào "trực tiếp" để làm điều này ...

nhưng điều này nên làm điều đó:

json[key] = json.key;
json.key = undefined;

Nó hơi phức tạp, nhưng này, nó hoạt động!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.