用于动态创建对象的嵌套循环

Nested loop to dynamically create objects

本文关键字:嵌套循环 创建对象 动态 用于      更新时间:2023-09-26

我正在尝试创建一个循环或嵌套循环,它将创建一(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];
};

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

// 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;
};