2009-10-12 92 views
1

如何覆蓋(或取消設置然後設置)數組?看起來像「array = new_array」不起作用。JavaScript:覆蓋陣列

預先感謝您。

+0

請詳細說明。 – SLaks 2009-10-12 16:48:50

+2

您能否爲我們提供一個代碼示例來了解爲什麼'array = new_array'代碼不起作用? – 2009-10-12 16:51:11

回答

-1

嗯,這似乎是問題不是我想的;我的錯誤是下面的行,這畢竟沒有帶了什麼都做數組:

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

sms.original成爲一個對象,然後sms.messages變得sms.original(我只是希望他們有相同的價值)。這些對象包含一個名爲的項目這是保持靜態的sms.original對象,但是當我更改sms.messages時,原始對象也發生了變化。解決辦法很簡單:

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

很抱歉打擾你,我應該已經制定,但該代碼在多個文件和功能splited。無論如何,謝謝你們,現在Guffa的拼接技術爲我工作。

12

要創建一個空數組賦值給變量,你可以使用Array構造函數:

array = new Array(); 

或者你可以使用一個空數組文本:

array = []; 

如果你有幾個引用到一個陣列,以便您必須清空實際的陣列對象而不是替換參考,可以這樣做:

array.splice(0, array.length); 
0

我不完全確定你要做什麼,但是有幾種方法可以重置數組。

您可以通過現有的陣列只是迭代,並設置每個指數等於空(或空字符串或0,或者你認爲什麼價值是一個復位):

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

你也可以只更新現有對象的新實例引用:

arr = []; 
1

這應該有效。

array1 = array2; 

如果不是,請提供更多詳細信息。

+0

我不認爲你需要明確指出array1 = null。如果你只是更新引用,垃圾收集器應該識別一個沒有引用指向它的實例。 – Tom 2009-10-12 16:54:42

+0

不需要兩個任務;第二個就足夠了。 – 2009-10-12 16:55:15

+0

是的,你是對的。 – 2009-10-12 16:55:54