Je travaille sur une petite bibliothèque qui me permet de coder des valeurs de base avec des objets. Dire que j'ai l'objet suivant:Codage de valeur de clé d'objet Javascript. Définition dynamique d'une valeur imbriquée
var data = { key1: "value1", key2: { nested1: 1, nested2: "wowza!" } };
Et je la fonction JavaScript suivante:
var setData = function(path, value) {
eval("data." + path + "= value;");
};
Et en cours d'utilisation: cependant
setData("key1", "updated value1"); // data.key1 == "updated value1"
setData("key2.nested1", 99); // data.key2.nested1 == 99
Cela fonctionne, je voudrais accomplir la ci-dessus sans utiliser eval
. Est-ce possible, ou est eval
le meilleur chemin à faire?
EDIT:
NOTE on peut supposer la valeur que vous configurez existe, au moins pour la profondeur de chemin - 1. Je suis plus préoccupé par définir la valeur d'un objet existant.
Je souhaite que je pourrais upvote ceci 100 fois - c'était exactement ce que je cherchais! Je vous remercie! –
** Merci ** beaucoup! Je ne peux pas commencer à vous dire combien cela m'a aidé. –
Ceci est une excellente réponse. J'ai fait une version sans argument 'obj' et avec la syntaxe ES6 pour la lisibilité. https://gist.github.com/sungwoncho/8caf7f3d9e56741c0631cda134e01832 –