2009-05-19 21 views

risposta

86

Sì. È possibile utilizzare:

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

O semplicemente utilizzare il secondo metodo se si hanno i valori a portata di mano durante la scrittura del programma.

-2

Beh, non c'è un modo "diretto" per fare questo ...

ma questo dovrebbe farlo:

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

E 'un po' complicato, ma hey, funziona!

8

Questo dovrebbe fare il trucco:

var key = "anything"; 

var json = {}; 

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

ma vuole farlo nel contesto di un oggetto letterale. –

86

In ES6, utilizzare computed property names.

const key = "anything"; 

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

Nota le parentesi quadre intorno a key. Puoi effettivamente specificare qualsiasi espressione tra parentesi quadre, non solo una variabile.

+8

Questa dovrebbe essere la nuova risposta accettata – Phoenix

+2

funziona su chrome as-well. risposta più semplice e migliore (y) –

-1

Le chiusure funzionano benissimo per questo.

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

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

La chiusura è semplicemente il meccanismo utilizzato qui. Il concetto è HOF. –

+0

HOF = Funzioni ordine superiore. – Rick

2

Soluzione:

var key = "anything"; 

var json = {}; 

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

Spiega la tua soluzione. –

+1

@MartinZabel Sembra che non abbia bisogno di spiegazioni. –

-1

aveva bisogno di una soluzione Recentemente come impostare i cookie che passa i valori chiave JSON dinamica. Utilizzando lo https://github.com/js-cookie/js-cookie#json, può essere fatto facilmente. Voleva memorizzare ogni valore di opzione selezionato dell'utente nel cookie, quindi non va perso in caso di spegnimento della scheda o del browser.

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

Quindi è possibile recuperare ogni valore chiave biscotto su ogni caricamento della pagina utilizzando

Cookies.getJSON('option_values'); 
Problemi correlati