1. 間違った実装
多くの人は等号を直接使用して値を割り当てる可能性があります:
var array1 = new Array("1","2","3");
array2 = array1.length = 0;
alert(array2); // 空を返します
JavaScript はプリミティブ型と参照型に分かれているため、このアプローチは間違っています (Java や C# と同様)。配列は参照クラス
型です。 array2 は参照を取得するため、array1 に対する変更は array2 に影響します。
2.slice() を使用します。
slice() は配列も返すため、slice() を使用してコピーできます。
var array1 = new Array("1" ,"2 ","3");
array2 = array1.slice(0);
array1.length = 0; // 1 を返します。 2, 3
3. concat() を使用します
concat() は呼び出し元の関数の配列ではなく、新しい配列を返すので、これをコピーに使用できることに注意してください。
コードをコピー
コードは次のとおりです。 var array1 = new Array("1" ,"2 ","3"); array2 = array1.concat();
array1.length = 0; // 1, 2 を返します。 , 3
4. テスト
コードをコピーします
/title>
> IE8 の
両方とも FF3.0 と FF3.0 でのテストに合格しました