我尝试在多个循环中设置数组的值,但是当我尝试获取第一个循环的索引时,我只是得到最后一个。
像这样的例子start_date = 1;
end_date = 4;
parent = [];
item = [
{item : 1},
{item : 2},
{item : 3}
];
for(i = start_date;i <= end_date;i++){
for(x = 0; x < item.length; x++){
item[x].parent = i;
}
parent.push(item)
}
但输出总是4,
parent = [
[
{item : 1,parent : 1},
{item : 2,parent : 1},
{item : 3,parent : 1},
],
[
{item : 1,parent : 2},
{item : 2,parent : 2},
{item : 3,parent : 2},
],
[
{item : 1,parent : 3},
{item : 2,parent : 3},
{item : 3,parent : 3},
],
[
{item : 1,parent : 4},
{item : 2,parent : 4},
{item : 3,parent : 4},
],
]
我希望输出像
抱歉我的英文不好答案 0 :(得分:1)
将第一个Iteratiton中的数组中的元素设置为1,将第二个中的元素设置为2 ...并将最后一个中的元素设置为4。
所以输出是正确的,你想要达到什么目的?
在问题更新后编辑:
你的问题是,你总是在你的所有数组中引用相同的对象。但是每次调用item[x].parent = i
时都会覆盖此对象,因此您必须在Array中创建foreaach元素,并在其上创建一个对象。
start_date = 1;
end_date = 4;
parent = [];
item = [
{item : 1},
{item : 2},
{item : 3}
];
for(i = start_date;i <= end_date;i++){
var temp = [];
for(x = 0; x < item.length; x++){
temp[x] = {};
temp[x].item = item[x].item;
temp[x].parent = i
}
parent.push(temp)
}