我需要根据同样动态且在某种程度上是随机的信息动态创建JS对象。
我发现了if(例如):
var dynamicname = "xyz";
var obj = {};
var i = 0;
while (i < 10) {
obj[dynamicname] = {[i] : "Sample text"};
i++;
}
console.log(obj); //output : {9 : "Sample text"}
这将阻止创建完全动态创建的对象,因为属性名称的值不能超过1。
除非我在这里完全遗漏了一点,否则这将使得使像我这样的对象或多或少地变得不可能。
答案 0 :(得分:3)
没有错误。您只是对什么是对象常量有误解。
每次您这样做:
var x = {}
它被编译为此:
var x = new Object();
这意味着您的行:
obj[dynamicname] = {[i] : "Sample text"}
已编译为:
obj[dynamicname] = new Object(); // this replaces previous value
obj[dynamicname][i] = "Sample text";
您要创建的只是一个对象,并继续向其添加名称为i
的属性。因此代码应该是:
var dynamicname = "xyz";
var obj = {};
var i = 0;
obj[dynamicname] = {}; // create just one object
while (i < 10) {
obj[dynamicname][i] = "Sample text"; // keep adding properties to the object
i++;
}