E comercial nas propriedades do objeto

Nov 22 2020

Estou escrevendo um script JS que tem um objeto com & em algumas de suas propriedades, por exemplo

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

A questão é, quando tento iterar sobre um de seus valores, por exemplo

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

falha, não pode computar t , acho que não gosta de ter &'s e caracteres semelhantes na propriedade.

Tenho tentado descobrir como ter e usar & 's em propriedades sem sorte; Tentei codificar a string com encodeURIComponent, mas também não tive sorte.

Alguma ideia de como posso fazer isso, se possível? Eu preciso ter esses & está lá. Estou pensando nisso usando duas matrizes em vez do objeto, uma com as propriedades do objeto e a outra com cada uma das matrizes de valor do objeto; mas eu realmente prefiro ficar com um objeto, pois posso precisar adicionar mais "níveis de profundidade" no futuro.

Respostas

1 MisterJojo Nov 22 2020 at 08:45

usar de (por matriz), em vez de em (para propriedades)

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 );
    }
  }