开发者问题收集

用括号符号构建一个新的嵌套对象

2020-11-15
371

我正在尝试基于括号符号构建一个新的嵌套对象。我的语法是

metaObj[subCat][attribute] = value;

我有这些变量; 我的目标是实现这种结构

metaObj = {
   chart : {
      x: "random",
      y: 123
   },
   data : {
      x: "random",
      y: 123
   }
}

我应该动态构建它,因为属性名称和类别可能会在每种情况下发生变化

但我收到了这个错误

Uncaught TypeError: Cannot set property ---- of undefined
2个回答

错误表明无法设置未定义的属性,因为 subCat 未定义。

解决方案是先将其定义为一个对象,然后执行您的操作。

metaObj = {}; 
metaObj[subCat] = {}; // define the subCat ( metaObj: {subCat: {}})
metaObj[subCat][attribute] = value;
Khai
2020-11-15

这是因为您正在尝试为尚未创建的对象设置值。 假设 metaObj 已使用 {

if(!metaObj[subCat]) {
 metaObj[subCat]= {};
 metaObj[subCat][attribute] = value;
} else {
 metaObj[subCat][attribute] = value;
}
初始化
Amaarockz
2020-11-15