值我有以下几点:现在在一个循环中,所有的数组元素得到的最后一个
var travel_path=[];
var point={
"left": 0,
"top": 0
};
while(/*some condition here*/){
point.left+=3;
point.top+=5;
travel_path.push(point);
}
console.log(travel_path);
,如果while
循环10次迭代运行,而不是在获得的left
和top
的增加值每个元素,我得到10个具有相同值{"left": 30, "top": 50}
的元素。
因此,即使我使用push来将元素追加到数组的末尾,它也会以某种方式更新所有以前的元素。
任何想法如何解决这个问题?
对象通过引用*传递*值,你只有一个单一的'点'对象,你继续推动,这是你唯一要改变的对象。 – adeneo
您需要在迭代的每个步骤中创建一个新对象,然后将其推送到您的数组,现在您要推送同一个“点”变量的多个副本。 – slugo
那么我该如何解决它?我试着添加var tmp = point;然后每次推动tmp而不是点,但结果是一样的。 – jovan