值我有以下幾點:現在在一個循環中,所有的數組元素得到的最後一個
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