オブジェクトのプロパティのアンパサンド

Nov 22 2020

一部のプロパティに&が含まれるオブジェクトを含むJSスクリプトを作成しています。

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

問題は、その値の1つを反復しようとすると、たとえば

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

失敗し、tを計算できません。プロパティに&や同様の文字を含めるのは好きではないと思います。

私は運がないプロパティで&を持って使用する方法を見つけようとしてきました。encodeURIComponentを使用して文字列をエンコードしようとしましたが、うまくいきませんでした。

可能であれば、どうすればそれを行うことができますか?私はそれらを持っている必要があります&そこにあります。オブジェクトの代わりに2つの配列を使用することを考えています。1つはオブジェクトのプロパティを持ち、もう1つはオブジェクトの値の配列です。しかし、将来的に「深さのレベル」を追加する必要があるかもしれないので、私はむしろオブジェクトに固執したいと思います。

回答

1 MisterJojo Nov 22 2020 at 08:45

使用(配列用)の代わり(プロパティ)

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