数组引用:将对象添加到对象数组

时间:2013-09-05 23:47:10

标签: 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个相同数组的对象。我该如何解决?

由于

1 个答案:

答案 0 :(得分:6)

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

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