这可能是一个非常基本的问题 - 请参阅一个简单的代码:
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
Run Code Online (Sandbox Code Playgroud)
问题是每次执行ar2.push(ar1)时,它都会覆盖ar2的所有元素.执行此代码后,我得到一个包含3个相同数组的对象.我该如何解决?
谢谢
JS中的对象始终是引用(与字符串或数字不同).每当您push引用已在数组中的同一对象时,您需要克隆:
ar2.push(ar1.slice(0)); // clone ar1
Run Code Online (Sandbox Code Playgroud)