开发者问题收集

Javascript 在对象内动态创建对象

2020-11-20
1322

我有一个空对象,想要动态地在对象内部创建一个对象。

const obj = {}
obj["test1"]["test1.1"] = x //initialize to some variable

我收到错误

Uncaught TypeError: Cannot set property 'test1.1' of undefined

我希望输出像这样

obj = {
   test1: {
       test1.1: x //some variable
   }
}
3个回答

如果您所说的 动态 是指属性的名称不确定,则可以使用括号插入动态变量名称:

const arg1 = 'test1';
const arg2 = 'test1.1';
const x = 42;

// assign both variable names dynamically
const obj = { [arg1]: { [arg2]: x } };
console.log(obj);
Hao Wu
2020-11-20

您可以分两步或一步完成此操作

const x = "some var";
const obj = {};

obj["test1"] = {
  "test1.1": x
}; // assign the nested object 
console.log(obj);

// or 

const y = "some var";

const obj1 = {  // assign the complete object 
  test1: {
    "test1.1": x
  }
}; 
console.log(obj1);
mplungjan
2020-11-20

您需要初始化 obj["test1"] = {

const obj = {}
obj["test1"] = {}
obj["test1"]["test1.1"] = 'x'

console.log(obj)

对于使用 lodash 库的其他解决方案,您可以使用 set() 方法。

var obj = {}
_.set(obj, ["test1", "test1.1"], 'x');
console.log(obj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
wangdev87
2020-11-20