2013-12-13 136 views
0

我试图创建一个循环或嵌套的循环,这将创建一个(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]; 
}; 
+0

但是,什么是你面临的问题? – khalid13

+0

我在这里看不到嵌套循环。 – brouxhaha

+0

我无法弄清楚如何建立与上面的例子具有相同结构的多个对象。窗口['obj'+ i] [municipo [j]] = econ [i];不会创建对象。 – Bwyss

回答

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; 
}; 
+0

每次迭代都会替换'obj'的值,对吧? – DontVoteMeDown

+0

'obj'将在每次迭代中引用一个新对象,但是在迭代结束时'obj'被赋值为'chartArray'的一个元素,所以保持在该数组中的引用不会丢失或被覆盖。您将最终得到一个包含多个不同对象的数组(而不是多次覆盖对象)。 – MT0

+0

是的,你说得对。 – DontVoteMeDown