javascript - 数组引用 : adding an object to array of objects

标签 javascript

这可能是一个非常基本的问题 - 请参阅一个简单的代码:

var ar1=[];
var ar2=[];
ar1[0] = 'Constant';
ar1[1] = data.attr.const;
ar2.push(ar1);  //OK, ar2 contains one array of two correct elements

ar1[0] = 'R-squared';
ar1[1] = data.attr.rsq;
ar2.push(ar1);   // Not OK - ar2 contains 2 identical arrays

ar1[0] = 'R-sq. adjusted';
ar1[1] = data.attr.rsqadj;
ar2.push(ar1);   // Not OK - ar2 contains 3 identical arrays

问题是每次执行ar2.push(ar1)时,它都会覆盖ar2的所有元素。执行此代码后,我得到一个包含 3 个相同数组的对象。我该如何修复它?

谢谢

最佳答案

JS 中的对象始终是引用(与字符串或数字不同)。每当您 push 时,您引用的是数组中已有的同一对象,您需要克隆:

ar2.push(ar1.slice(0)); // clone ar1

关于javascript - 数组引用 : adding an object to array of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647708/

相关文章:

php - php 文件的 OOP Diamond 问题 - 我应该如何处理?

javascript - 从 HTTP 请求中提取额外参数

javascript - CORS 在 Chrome 中不工作

javascript - 在 TypeScript 中扩展接口(interface)

javascript - 如何从另一个脚本调用变量来执行函数

javascript - 在第二页使用第一页的数据

javascript - 在 react 中的 url 更改上重新呈现相同的组件

c# - 如何从嵌入式资源加载 HTML/JavaScript 到 winform web 浏览器

javascript - 如何让 knockout 扩展器在 observableArray 中工作

javascript - 如何将相同的元素插入空数组