2009-05-19 18 views

Odpowiedz

86

Tak. Możesz użyć:

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

Lub po prostu użyj drugiej metody, jeśli masz wartości pod ręką podczas pisania programu.

-2

Cóż, nie ma „bezpośredni” sposób to zrobić ...

ale to powinno wystarczyć:

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

Jest to trochę skomplikowane, ale hej, to działa!

8

To powinno załatwić sprawę:

var key = "anything"; 

var json = {}; 

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

Ale chce to zrobić w kontekście obiektu dosłownym. –

86

W ES6 użyć computed property names.

const key = "anything"; 

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

Uwaga nawiasy kwadratowe wokół key. W rzeczywistości można podać dowolne wyrażenie w nawiasach kwadratowych, a nie tylko zmienną.

+8

To powinna być nowa akceptowana odpowiedź – Phoenix

+2

działa na chrome jako-well. najprostsza i najlepsza odpowiedź (y) –

-1

Zamknięcia działają doskonale do tego.

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

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

Zamknięcie jest jedynie mechanizmem tutaj użytym. Ta koncepcja to HOF. –

+0

HOF = Funkcje wyższego rzędu. – Rick

2

Rozwiązanie:

var key = "anything"; 

var json = {}; 

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

Proszę wyjaśnij swoje rozwiązanie. –

+1

@MartinZabel Wydaje się, że nie wymaga wyjaśnienia. –

-1

Ostatnio Potrzebowaliśmy rozwiązania, jak ustawić ciasteczka przechodzącej wartości kluczowych dynamiczny JSON. Korzystanie z https://github.com/js-cookie/js-cookie#json, można to łatwo zrobić. Chciała zapisać każdą wybraną wartość opcji użytkownika w pliku cookie, aby nie została utracona w przypadku wyłączenia karty lub przeglądarki.

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

Następnie można odzyskać każdą wartość klucza ciasteczek na każdej stronie obciążenia przy użyciu

Cookies.getJSON('option_values'); 
Powiązane problemy