javascript - 在循环中,所有数组元素都获取最后一个的值

标签 javascript

我有以下内容:

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 次迭代,而不是在每个元素中获取 lefttop 的增量值,我获取 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/

相关文章:

javascript - 在父组件 `componentDidMount`生命周期中调用ReactDOM.render

javascript - 呈现最初隐藏的 HTML 元素的正确方法

javascript - 使用 Google map 绘制 svg 圆圈

Javascript:有选择地从 URL 中删除哈希(或哈希),以便 URL 保持有效或可用

javascript - Angular 下拉菜单和 ng-option 的最佳实践是什么

javascript - Testcafe 可以看到按钮但不能点击它

javascript - 如何在javascript中将日期一种格式转换为另一种格式?

javascript - 使用 jQuery 下载链接

javascript - (从默认导出导入)Redux 中的根 reducer 是否自动称为 'rootReducer' ?

javascript - 将 Java 的 PBEWithMD5AndDES 转换为 JavaScript