我几乎就在这里,但似乎无法按计划实现此功能。
我有两个数组:keyArray和ValArray;
我要做的是让一个函数传递两个参数(keyArr,valArr)。在此函数中,声明父对象,并且(for循环)循环传递的参数的长度(在本例中为“keyArr”)根据传递的参数的长度创建新对象。然后,为新创建的对象分配键和值。
问题是我能够创建父对象“mObj”,并且子对象为“mObj”,但我只能将键和值赋值给第一个子对象“obj0”而不是其余的子对象正确。在代码的最后,这是我想要的:
enter code heremObj.obj0.firstname = John;
mObj.obj0.lastname = superfly;
mObj.obj0.email = "john.superfly@yahoo.com";
mObj.obj1.firstname = John;
mObj.obj1.lastname = superfly;
mObj.obj1.email = "john.superfly@yahoo.com";
mObj.obj2.firstname = John;
mObj.obj2.lastname = superfly;
mObj.obj2.email = "john.superfly@yahoo.com";
这是我的代码:
var keyArr = ["firstname","lastname","email"];
var valArr = ["John","Superfly","jsuperfly@yahoo.com"];
function test(keys,vals) // FUNCTION TEST ACCEPTS TWO ARGS
{
var mObj = {}; // PARENT OBJECT
var len = (keys.length); //ARGUMENT KEY'S LENGTH
for(var i=0; i<len; i++)
{
mObj["obj" + i] = {}; //CHILDREN OBJECTS ARE CREATED TO PARENT "mObj" OBJECT
mObj["obj" + i][keys[i]] = vals[i]; //KEYS AND VALUES ARE ASSIGNED HERE
}
alert(mObj.obj1.firstname); // CURRENTLY RETURNS "UNDEFINED"
}
test(keyArr,valArr);
任何对此的见解都将受到高度赞赏。 谢谢。
答案 0 :(得分:2)
似乎这就是你需要的。此代码将创建与keyArr
和valArr
数组的长度一样多的子对象。虽然不知道你为什么需要它。
var keyArr = ["firstname", "lastname", "email"];
var valArr = ["John", "Superfly", "jsuperfly@yahoo.com"];
function test(keys, vals) {
var mObj = {},
i, j, len = keys.length;
for (i = 0; i < len; i++) {
mObj["obj" + i] = {};
for (j = 0; j < len; j++) {
mObj["obj" + i][keys[j]] = vals[j];
}
}
alert(mObj.obj1.firstname);
}
console.log( test(keyArr, valArr) );