我正在尝试实现Array.repeat,所以
[3].repeat(4) // yields
=> [3, 3, 3, 3]
……让我发疯
试过这个:
Array::repeat = (num)->
array = new Array
for n in [0..num]
array.concat(this)
array
但是[3] .repeat(x)总是返回[].在哪里搞砸了?或者有更好的方法吗?
最后结果:
Array::repeat = (num)->
array = new Array
return array if num < 1
for n in [1..num]
array = array.concat(this)
array
['a'].repeat(5)
=> ['a', 'a', 'a', 'a', 'a']
解决方法:
array.concat返回一个新数组,不会修改现有数组.
你需要写
array = array.concat(dup)
或者,您可以使用push(),它会修改原始数组:
array.push.apply(array, dup)