4

配列を上書き(または設定解除してから設定)するにはどうすればよいですか?"array = new_array"動作しないようです。

4

6 に答える 6

14

変数に割り当てる空の配列を作成するには、Arrayコンストラクターを使用できます。

array = new Array();

または、空の配列リテラルを使用できます。

array = [];

1つの配列への参照が複数あるため、実際の配列オブジェクトへの参照を置き換えるのではなく空にする必要がある場合は、次のように実行できます。

array.splice(0, array.length);
于 2009-10-12T16:51:59.920 に答える
3

これは機能するはずです。

array1 = array2;

そうでない場合は、詳細をお知らせください。

于 2009-10-12T16:52:49.310 に答える
0

何をしようとしているのか正確にはわかりませんが、アレイをリセットするにはいくつかの方法があります。

既存の配列を反復処理して、各インデックスをnull(または空の文字列または0、あるいはリセットと見なされる値)に設定することができます。

for(var i = 0; i < arr.length; i++) {
   arr[i] = null;
}

オブジェクトの新しいインスタンスへの既存の参照を更新することもできます。

arr = [];
于 2009-10-12T16:52:03.447 に答える
0

Slice() の使用

このように - >array = new_array.slice(0);

于 2019-11-12T10:12:08.480 に答える
-2

うーん、問題は私が思っていたものではなかったようです。私の間違いは、配列とはまったく関係のない次の行でした。

sms.original = eval('(' + data + ')');
sms.messages = sms.original;

sms.originalがオブジェクトになり、sms.messagessms.originalになります(同じ値にしたかっただけです)。オブジェクトには、 sms.originalオブジェクトで静的なままにするように指示されたitemsという名前の配列が含まれていますが、 sms.messagesを変更すると、元のオブジェクトも変更されました。解決策は簡単でした:

sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');

お手数をおかけして申し訳ありません。詳しく説明する必要がありましたが、コードは複数のファイルと関数に分割されています。とにかくありがとう、グッファのスプライス技術は私のために働くようになりました.

于 2009-10-12T19:21:12.647 に答える