2009-05-19 15 views

Respuesta

86

Sí. Puede usar:

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

O simplemente use su segundo método si tiene los valores a mano al escribir el programa.

-2

Bueno, no hay una manera "directa" para hacer esto ...

pero esto debe hacerlo:

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

Es un poco complicado, pero bueno, funciona!

8

Esto debe hacer el truco:

var key = "anything"; 

var json = {}; 

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

Pero él quiere hacer esto en el contexto de un objeto literal. –

86

En ES6, utilice computed property names.

const key = "anything"; 

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

Tenga en cuenta los corchetes alrededor de key. En realidad, puede especificar cualquier expresión entre corchetes, no solo una variable.

+8

Esta debería ser la nueva respuesta aceptada. – Phoenix

+2

funciona en chrome as-well. La respuesta más simple y mejor (y) –

-1

Los cierres funcionan muy bien para esto.

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

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

El cierre es simplemente el mecanismo utilizado aquí. El concepto es HOF. –

+0

HOF = Funciones de orden superiores. – Rick

2

Solución:

var key = "anything"; 

var json = {}; 

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

Por favor explique su solución. –

+1

@MartinZabel Parece que no necesita explicación. –

-1

Recientemente necesitaba una solución de cómo configurar las cookies pasando los valores clave dinámica JSON. Usando el https://github.com/js-cookie/js-cookie#json, se puede hacer fácilmente. Quería almacenar cada valor de opción seleccionado del usuario en una cookie, para que no se pierda en caso de que la pestaña o el navegador se apaguen.

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

A continuación, puede recuperar cada valor clave de la galleta en cada carga de página utilizando

Cookies.getJSON('option_values'); 
Cuestiones relacionadas