0

これはおそらく非常に基本的な質問です - 簡単なコードを見てください:

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 つの同一の配列を含むオブジェクトを取得します。どうすれば修正できますか?

ありがとう

4

1 に答える 1

6

JS のオブジェクトは常に参照です (文字列や数値とは異なります)。pushすでに配列内にある同じオブジェクトを参照している場合は常に、複製する必要があります。

ar2.push(ar1.slice(0)); // clone ar1
于 2013-09-05T23:50:00.597 に答える