配列を上書き(または設定解除してから設定)するにはどうすればよいですか?"array = new_array"
動作しないようです。
6 に答える
変数に割り当てる空の配列を作成するには、Arrayコンストラクターを使用できます。
array = new Array();
または、空の配列リテラルを使用できます。
array = [];
1つの配列への参照が複数あるため、実際の配列オブジェクトへの参照を置き換えるのではなく空にする必要がある場合は、次のように実行できます。
array.splice(0, array.length);
これは機能するはずです。
array1 = array2;
そうでない場合は、詳細をお知らせください。
何をしようとしているのか正確にはわかりませんが、アレイをリセットするにはいくつかの方法があります。
既存の配列を反復処理して、各インデックスをnull(または空の文字列または0、あるいはリセットと見なされる値)に設定することができます。
for(var i = 0; i < arr.length; i++) {
arr[i] = null;
}
オブジェクトの新しいインスタンスへの既存の参照を更新することもできます。
arr = [];
このように - >array = new_array.slice(0);
うーん、問題は私が思っていたものではなかったようです。私の間違いは、配列とはまったく関係のない次の行でした。
sms.original = eval('(' + data + ')');
sms.messages = sms.original;
sms.originalがオブジェクトになり、sms.messagesがsms.originalになります(同じ値にしたかっただけです)。オブジェクトには、 sms.originalオブジェクトで静的なままにするように指示されたitemsという名前の配列が含まれていますが、 sms.messagesを変更すると、元のオブジェクトも変更されました。解決策は簡単でした:
sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');
お手数をおかけして申し訳ありません。詳しく説明する必要がありましたが、コードは複数のファイルと関数に分割されています。とにかくありがとう、グッファのスプライス技術は私のために働くようになりました.