Esperluette dans les propriétés de l'objet

Nov 22 2020

J'écris un script JS qui a un objet avec des & dans certaines de ses propriétés, par exemple

var topicObj = {
"Client & Peripherals": ["USB", "Printer", "Copy/Paste"],
"Install & Upgrade": ["Tenant Upgrade", "Agent upgrade"]
}

Le problème est que, lorsque j'essaie d'itérer sur l'une de ses valeurs, par exemple

selMTopic = "Client & Peripherals"
for (t in topicObj[selMTopic]) {
  addTopic(topicsDD,topicObj[selMTopic][t]);
}

il échoue, il ne peut pas calculer t , je suppose qu'il n'aime pas avoir des caractères & et similaires dans la propriété.

J'ai essayé de découvrir comment avoir et utiliser des & dans les propriétés sans chance; J'ai essayé d'encoder la chaîne avec encodeURIComponent mais pas de chance non plus.

Une idée comment puis-je le faire, si possible? J'ai besoin de ceux-là. Je pense qu'il utilise deux tableaux au lieu de l'objet, l'un avec les propriétés de l'objet, et l'autre chacun des tableaux de valeurs de l'objet; mais je préférerais vraiment m'en tenir à un objet, car je devrais peut-être ajouter plus de "niveaux de profondeur" à l'avenir.

Réponses

1 MisterJojo Nov 22 2020 at 08:45

utilisation de (pour tableau) au lieu de in (pour propriétés)

var topicObj =
  { "Client & Peripherals" : ["USB", "Printer", "Copy/Paste"]
  , "Install & Upgrade"    : ["Tenant Upgrade", "Agent upgrade"]
  }
for (let selMTopic in topicObj)
  {
  for (let t of topicObj[selMTopic])
    {
    console.log( selMTopic,'->', t )
    // addTopic(topicsDD, t );
    }
  }