Je me demande s'il est possible d'utiliser des variables assignées comme identifiant dans une matrice JSON. Quand j'ai essayé cela, je reçois des résultats inattendus:
(code est simplifié, les paramètres sont transmis différents) p> maintenant la popup alerte dit: " paramètre 'au lieu de "animal". Je sais que je pourrais utiliser une méthode différente (créer un tableau et attribuer chaque paramètre sur une nouvelle ligne), mais je veux garder mon code compact. P> Merci d'avance! P> P>
3 Réponses :
Vous devrez construire votre objet en deux étapes et utiliser le [] code> Accessoir de propriété:
var parameter = 'animal';
var value = 'pony';
var obj = {};
obj[parameter] = value;
Util.urlAppendParameters (url, obj);
Oui, je le faisais déjà, mais je veux juste savoir si cela est possible, comme dans d'autres langages de programmation (par exemple, s'échapper avec des backticks, ou juste avec un premier signe de $) désolé pour le titre vague, la terminologie de programmation n'est pas ma meilleure compétence .
@CMS Nous avons recherché Internet pour une solution pendant une longue période et l'a trouvé ici, THX
Selon vos besoins, vous pouvez également construire votre objet avec une fonction d'assistance;
Util.createParameters = function(args) { var O = {}; for (var i = 0; i < arguments.length; i += 2) O[arguments[i]] = arguments[i + 1]; return O } Util.urlAppendParameters (url, Util.createParameters(parameter, value, "p2", "v2"));
Non, vous ne pouvez pas utiliser une variable comme identifiant dans un objet littéral comme celui-là. L'analyseur s'attend à un nom là-bas pour que vous ne puissiez pas faire beaucoup d'autre mais fournir une chaîne. De même, vous ne pouviez pas faire quelque chose comme ceci: Le seul travail autour de si vous souhaitez vraiment utiliser un objet littéral sur une seule ligne consiste à utiliser EVAL: P> Util.urlAppendParameters (url, eval("({" + parameter + " : value})");
C'est exactement ce que je cherchais. Pas que je vais l'utiliser (je ne veux vraiment pas vraiment vraiment: D), mais j'étais vraiment curieux de savoir comment cela pourrait être résolu. Merci!