2009-05-19 7 views

Répondre

86

Oui. Vous pouvez utiliser:

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

Ou simplement utiliser votre deuxième méthode si vous avez les valeurs à portée de main lors de l'écriture du programme.

-2

Eh bien, il n'y a pas une manière "directe" de le faire ...

mais cela devrait le faire:

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

Il est un peu difficile, mais bon, ça marche!

8

Cela devrait faire l'affaire:

var key = "anything"; 

var json = {}; 

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

Mais il veut faire cela dans le contexte d'un objet littéral. –

86

En ES6, utilisez computed property names.

const key = "anything"; 

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

Notez les crochets autour de key. Vous pouvez réellement spécifier n'importe quelle expression entre crochets, pas seulement une variable.

+8

Cela devrait être la nouvelle réponse acceptée – Phoenix

+2

fonctionne sur chrome aussi bien. réponse la plus simple et la meilleure (y) –

-1

Les fermetures fonctionnent très bien pour cela.

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

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

La fermeture est simplement le mécanisme utilisé ici. Le concept est HOF. –

+0

HOF = Fonctions d'ordre supérieur. – Rick

2

Solution:

var key = "anything"; 

var json = {}; 

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

Veuillez expliquer votre solution. –

+1

@MartinZabel Il semble à peine besoin d'explication. –

-1

Récemment besoin d'une solution comment définir les cookies passer les valeurs clés de JSON dynamique. En utilisant le https://github.com/js-cookie/js-cookie#json, cela peut être fait facilement. Voulait stocker chaque valeur d'option sélectionnée de l'utilisateur dans le cookie, de sorte qu'il ne soit pas perdu en cas de fermeture d'un onglet ou d'un navigateur.

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

Ensuite, vous pouvez récupérer chaque valeur de clé de cookie sur chaque chargement de page à l'aide

Cookies.getJSON('option_values'); 
Questions connexes