我有以下内容:
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 将元素追加到数组的末尾,它也会以某种方式更新所有先前的元素。
有什么办法可以解决这个问题吗?
最佳答案
您可以使用 Object.assign()
在每次循环迭代中创建对象的克隆,并将该对象推送到数组。
var travel_path = [];
var point = {
"left": 0,
"top": 0
};
var i = 0;
while (i++ < 5) {
point.left += 3;
point.top += 5;
travel_path.push(Object.assign({}, point));
}
console.log(travel_path);
关于javascript - 在循环中,所有数组元素都获取最后一个的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39618654/