将数组与自身连接起来

nic*_*oga 3 javascript arrays coffeescript

我正在努力实施Array.repeat,所以

[3].repeat(4) // yields
=> [3, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

......让我发疯

试过这个:

Array::repeat = (num)->
  array = new Array
  for n in [0..num]
    array.concat(this)
  array
Run Code Online (Sandbox Code Playgroud)

但[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']
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 6

array.concat 返回一个新数组,不会修改现有数组.

你需要写

array = array.concat(dup)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用push(),它会修改原始数组:

array.push.apply(array, dup)
Run Code Online (Sandbox Code Playgroud)