我想将for循环创建对象作为父对象的子对象。通常,我会在不使用for循环的情况下声明对象:
var mObj = {};
mObj.obj1 = {};
mObj.obj2 = {};
mObj.obj3 = {};
mObj.obj3.firstname = "john";
mObj.obj3.lastname = "superfly";
现在假设我想使用for循环来创建父对象“mObj”的子对象。
这是我出错的地方:
var mArr = ["firstname","lastname","email"]; // This array holds the keys for the objects
var mObj = {};
var len = (mArr.length);
for(var i=0; i<len; i++){
var obj+i = {}
mObj = obj+i;
mObj.obj + i.mArr[i] = ""
}
所以结果将是:
mObj.obj1.firstname = "";
mObj.obj2.lastname = "";
mObj.obj3.email = "";
我似乎无法使用在for循环中创建的计数器来命名对象,如:
obj1
obj2
obj3
非常感谢任何帮助。
感谢。
答案 0 :(得分:1)
var obj+i = {}
语法无效。
试试这个:
mObj['obj' + i] = {};
如果i == 1,则给出 mObj ['obj1'] = {};
哪个等于:
mObj.obj1
但是在动态构建时,你必须使用
mObj['obj' + i]
格式。
答案 1 :(得分:1)
var mArr = ["firstname","lastname","email"],
mObj = {},
len = (mArr.length),
i = 0;
for(; i<len; i++){
myObj['obj' + i] = {}
myObj['obj' + i].mArr[i] = ""
}
答案 2 :(得分:0)
您需要使用括号语法来指定动态变量。例如:
var sampleObj = {};
for(var j = 0; j < 3; j++)
{
sampleObj["obj" + j] = { test: j };
}
这应该产生以下对象:
{
"obj1" : { test: 1 },
"obj2" : { test: 2 },
"obj3" : { test: 3 }
}
然后运行循环后,您可以有效地使用此语句:
var testVal = sampleObj.obj1.test;