你如何在 Coffeescript 中打乱数组?

How do you shuffle an array in Coffeescript?

如何在 Coffeescript 中打乱数组?

Fisher–Yates shuffle from github(修改):

fisherYates = (arr) ->
    i = arr.length
    return arr unless i > 0

    while --i
        j = Math.floor(Math.random() * (i+1))
        [arr[i], arr[j]] = [arr[j], arr[i]] # use pattern matching to swap

当我测试时,您的表单出现了意外行为。 这种方式对我有用。

shuffle_array = (arr) ->
i = arr.length

while --i
  j = Math.floor(Math.random() * (i+1))
  [arr[i], arr[j]] = [arr[j], arr[i]]

return arr unless i > 0

干杯。

Array::shuffle = ->
    a=@
    i=a.length
    while i>0
        int=Math.floor(Math.random()*i)
        i--
        o=a[i]
        a[i]=a[int]
        a[int]=o
    a

console.log([1..10].shuffle())