javascript - 为父对象创建动态对象并分配键和值?

标签 javascript

我几乎已经完成了,但似乎无法按计划实现此功能。

我有两个数组:keyArray 和 ValArray;

我想做的是让一个函数传递两个参数(keyArr、valArr)。在此函数中,声明了一个父对象,并且(for-loop)循环遍历传递的参数的长度(在本例中为“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);

任何对此的见解都将不胜感激。 谢谢。

最佳答案

看来这就是您所需要的。此代码将创建与 keyArrvalArr 数组长度一样多的子对象。尽管不知道您为什么需要它。

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) );​

关于javascript - 为父对象创建动态对象并分配键和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236863/

相关文章:

javascript - 我如何使用 $location.state()

javascript - Flash 影片可以将鼠标事件传递到包含页面吗?

javascript - 基于用户选择的环境的选择性ejs模板

javascript - 使用正则表达式在 JavaScript 中将格式错误的日期 yyyy-M-d 重写为 yyyy-MM-dd

javascript - 在具有 onclick 事件的 div 中保留链接功能

javascript - Choropleth map 的 D3 js 工具提示问题

javascript - 根据滚动位置加载表格中的内容

javascript - 在 AngularJS 中将 angular.element() 转换为模板

javascript - 谷歌分析 : _setSiteSpeedSampleRate generating two GIF requests

javascript - 通过 jStorage 库迭代存储在 localStorage 中的一组键