Question Existe-t-il un moyen d'utiliser les clés de variable dans un littéral d'objet JavaScript?


J'ai un code comme ça.

var key = "anything";   
var object = {   
    key: "key attribute"  
};

Je veux savoir s'il existe un moyen de remplacer key avec n'importe quoi".

comme

var object = {  
    "anything": "key attribute"     
};

56
2018-05-19 13:23


origine


Réponses:


Oui. Vous pouvez utiliser:

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

Ou utilisez simplement votre deuxième méthode si vous avez les valeurs à portée de main lorsque vous écrivez le programme.


92
2018-05-19 13:27



Dans ES6, utilisez noms de propriété calculés.

const key = "anything";   

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

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


98
2018-03-16 12:48



Cela devrait faire l'affaire:

var key = "anything";

var json = {};

json[key] = "key attribute";

8
2018-05-19 13:31



Solution:

var key = "anything";

var json = {};

json[key] = "key attribute";

2
2018-02-25 19:45



Sur Javascript moderne (ECMAScript 6), vous pouvez regrouper la variable entre crochets:

var key = "anything";

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

1
2018-05-17 13:52



Les fermetures fonctionnent bien pour cela.

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

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

-1
2017-08-06 17:52



Récemment, il fallait une solution pour définir des cookies transmettant les valeurs de clé json dynamiques. En utilisant le https://github.com/js-cookie/js-cookie#json, cela peut être fait facilement. Nous voulions stocker chaque valeur d'option sélectionnée de l'utilisateur dans un cookie, afin qu'elle ne soit pas perdue en cas d'arrêt de l'onglet ou du 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 en utilisant 

Cookies.getJSON('option_values');

-1
2018-01-11 11:24



Eh bien, il n'y a pas de moyen "direct" de faire cela ...

mais cela devrait le faire:

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

C'est un peu délicat, mais bon, ça marche!


-2
2018-05-19 13:30