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
的内容相同。