Bonjour,
Je rencontre une… Difficulté (C’est le cas de le dire ) dans le cadre d’un gros projet.
Pour situer le contexte, j’ai une fonction updateData() qui prend en paramètre un chemin et une valeur. Ce chemin peut être… Simple : "items". Dans ce cas, je peux faire directement :
this.datas[ path ] = value;
Y’a pas de problème là-dessus. "this.datas" est la variable contenant toutes mes keys, sub-keys avec leur valeur.
Maintenant, si dans updateData, je passe en premier paramètre "sub1.any.point.abg", je ne sais pas, et c’est pour ça que je me dirige vers vous, comment accéder à "this.datas[sub1][any][point][abg]", dynamiquement.
J’ai essayé en splittant sur les points et en faisant un eval() mais j’avais un "Unexpected identifier". Du coup, j’ai laissé tomber cette piste.
Pour l’instant, je suis sur cette piste :
1 2 3 4 5 6 7 8 9 10 | if(variable.match(/\./)){ var keys_datas = variable.split(/[\.]/); var base_datas = this.datas; for(var i = 0; i < keys_datas.length; i++){ base_datas = base_datas[ keys_datas[i] ]; } } else { this.datas[ variable ] = value; } |
Avec base_datas, j’accède bien à la dernière clé splittée provenant de this.datas, et je peux attribuer la valeur de cette façon, en dessous du for : base_datas = value;
, maintenant, si je fais "this.datas = base_datas", je formate complètement this.datas pour ne lui attribuer que la valeur passée à updateData().
Comment je peux faire pour attribuer la value à la bonne clé dans this.datas sans supprimer les autres keys contenues ?
Je vous remercie.