javascript - JS:将外部定义的对象推入for循环内部的数组中,为什么总是显示最后一个而不是第一个,为什么console.log有效?
问题描述
Javascript,在for循环中将外部定义的对象推入数组时,最后一个被重复推入。
我阅读了许多 Q/A(见下面的链接)并知道解决方案,但没有找到以下 2 点的解释:
在推送之前和之后,console.log obj,它正确显示所有对象(不重复最后一个),但推送仅适用于最后一个;
如果外部定义的对象是“始终相同的对象”,为什么不重复第一个,而是重复最后一个?
相关问答:
如何在 JavaScript 中正确地将对象从 for 循环推送到数组?
let arr = [];
let obj = {};
for(let i=0; i<5; i++) {
obj["single"] = i;
obj["double"] = i*2;
console.log(obj);
arr.push(obj);
}
console.log(arr);
结果:
{ single: 0, double: 0 }
{ single: 1, double: 2 }
{ single: 2, double: 4 }
{ single: 3, double: 6 }
{ single: 4, double: 8 }
[
{ single: 4, double: 8 },
{ single: 4, double: 8 },
{ single: 4, double: 8 },
{ single: 4, double: 8 },
{ single: 4, double: 8 }
]
解决方案
推荐阅读
- javascript - 为什么我第二次 console.log(course) 时视图没有更新
- string - 使用 Sed 将文本文件中的子字符串替换为字符串数组
- c# - POST 模型(DTO)与列表到控制器
- json - 如何从字典中的列表中访问字典中的值?
- swift - 如何在 Swift 中完全定义关联类型之间的关系?
- ios - 如何通过点击通知打开标签栏
- javascript - 流停止后网络摄像头灯保持亮起
- reactjs - Redux 状态未在开发中的应用程序中更新
- javascript - 从 AJAX/PHP 中的选择输入中获取值检索用于表单提交的 innerhtml
- sql - 没有参数 $3 SQL