2013-05-09 33 views
0

我有一個數組list,其中包含所有要處理的預定義數據。如何處理數組的副本並稍後重置

然後,我想製作一份我做這項工作的數組的副本,即洗牌然後彈出一個元素。現在列表爲空後,我想重置它,即再次填入list的內容。

我現在是這樣的:

list = [{...}, {...}, {...}] 
list2 = list 

shuffle = (a) -> 
    i = a.length 
    while --i > 0 
    j = ~~(Math.random() * (i + 1)) 
    t = a[j] 
    a[j] = a[i] 
    a[i] = t 
    a 

get_list_item = -> 
    shuffle(list2) 
    list2.pop() 

reset_list = -> 
    list2 = list 

但我從list2彈出所有項目後,reset_list()不重置名單。它仍然是空的

+0

CoffeeScript是一種空白語言,我看到了一些關於縮進的問題,這只是一個複製粘貼問題? – 2013-05-09 11:46:25

+0

@AlbertoZaccagni這只是一個複製粘貼問題,現在修復它。 – pgrosslicht 2013-05-09 13:24:25

回答

2

list2 = list不會複製list,它只是創建另一個指向同一個數組的指針。所以當你使用pop()時,原來的(也是唯一的)數組會丟失元素。

將這些說明替換爲list2 = list.slice 0,它應該像你想要的那樣工作。

+0

完美地工作,謝謝。我認爲'list2'只是和list有相同的內容。 – pgrosslicht 2013-05-09 14:51:20