2009-05-19 58 views

回答

86

是。您可以使用:

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

或者只需使用第二種方法,如果您在編寫程序時手頭有值。

-2

那麼,有沒有「直接」的方式做到這一點...

但是這應該這樣做:

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

它有點棘手,但嘿,它的工作原理!

8

這應該做的伎倆:

var key = "anything"; 

var json = {}; 

json[key] = "key attribute"; 
+0

每個頁面加載每個Cookie的鍵值但他想這樣做的對象文本的情況下。 – 2017-04-17 17:15:03

86

在ES6,使用computed property names

const key = "anything"; 

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

請注意圍繞key的方括號。實際上,您可以在方括號中指定任何表達式,而不僅僅是一個變量。

+8

這應該是新的接受的答案 – Phoenix 2016-01-11 06:17:06

+2

工作在鍍鉻井。最簡單和最好的答案(y) – 2017-08-16 13:11:46

-1

閉合對此非常有效。

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

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

封閉僅僅是這裏使用的機制。這個概念是HOF。 – 2017-04-17 17:12:53

2

解決方案:

var key = "anything"; 

var json = {}; 

json[key] = "key attribute"; 
-1

最近需要一種解決方案如何設置Cookie傳遞的動態JSON鍵值。 使用https://github.com/js-cookie/js-cookie#json,它可以很容易地完成。 希望將每個選定的用戶選項值存儲在cookie中,因此在選項卡或瀏覽器關閉時不會丟失。

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 }); 
    }); 

然後你可以檢索使用

Cookies.getJSON('option_values');