嵌套循环以动态创建对象

时间:2013-12-13 17:58:08

标签: javascript loops

我正在尝试创建一个循环或嵌套循环,它将创建包含许多对象的一(1)个数组:

// example of the object structure
obj0.country = distAttr[0];
obj0[municipo[0]] = econ[0];
obj0[municipo[1]] = edu[0];
obj0[municipo[2]] = gov[0];
obj0[municipo[3]] = health[0];
obj0[municipo[4]] = infra[0];
obj0[municipo[5]] = social[0];

obj1.country = distAttr[1];
obj1[municipo[0]] = econ[1];
obj1[municipo[1]] = edu[1];
obj1[municipo[2]] = gov[1];
obj1[municipo[3]] = health[1];
obj1[municipo[4]] = infra[1];
obj1[municipo[5]] = social[1];

// ... obj18

这是我到目前为止所做的:

// create all the objects, distAttr length is 19
for (var i = 0; i < distAttr.length; i++) {
    window['obj'+i ] = {};
};

// distName length is 6
var number = distName.length;

// this loop I can't figure out
for (var j = 0; i < distName.length; j++) {
    window['obj'+i ][municipo[j]] = econ[i];
};

// bind the objects to the array
for (var i = 0; i < distAttr.length; i++) {
    chartArray[i] = window['obj'+i];
};

1 个答案:

答案 0 :(得分:1)

您可以在一个循环中构建对象:

// Set up some variables and the field values you will use:
var j,
    obj,
    ec = municipo[0],
    ed = municipo[1],
    go = municipo[2],
    he = municipo[3],
    in = municipo[4],
    so = municipo[5];

// Loop through the array.
for (i = 0; i < distAttr.length; i++) {
    // Create an object with a country field. 
    obj = { country: distAttr[i] };
    // Populate the other fields.
    obj[ec] = econ[i];
    obj[ed] = edu[i];
    obj[go] = gov[i];
    obj[he] = health[i];
    obj[in] = infra[i];
    obj[so] = social[i];
    // Set the array index to contain the object
    // (and if you need it then create a global object `objx`
    //  - not sure if you need it though.)
    chartArray[i] = window['obj'+i] = obj;
};