Coffeescript 如何使用阵列副本并在以后重置它

Coffeescript 如何使用阵列副本并在以后重置它,coffeescript,Coffeescript,我有一个数组列表,其中包含我想要处理的所有预定义数据 然后我想复制一个我在上面工作的数组,即洗牌,然后弹出一个元素。现在,在列表为空后,我想重置它,即用list的内容再次填充它 我现在得到的是: list = [{...}, {...}, {...}] list2 = list shuffle = (a) -> i = a.length while --i > 0 j = ~~(Math.random() * (i + 1)) t = a[j] a[

我有一个数组
列表
,其中包含我想要处理的所有预定义数据

然后我想复制一个我在上面工作的数组,即洗牌,然后弹出一个元素。现在,在列表为空后,我想重置它,即用
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\u list()
不会重置列表。它仍然是空的

list2=list
不会复制
列表
,它只会创建指向同一数组的另一个指针。因此,当您使用
pop()
时,原始(也是唯一)数组将丢失元素


将这些说明替换为
list2=list.slice 0
,它应该可以像您所希望的那样工作。

CoffeeScript是一种空白语言,我看到缩进有一些问题,这只是一个复制粘贴问题吗?@AlbertoZaccagni这只是一个复制粘贴问题,正在修复。非常有效,谢谢。我认为
list2
的内容应该与
list
的内容相同。