Ruby

时间:2016-07-25 18:11:37

标签: arrays ruby duplicates elements

我有一个数组rangers = ["red", "blue", "yellow", "pink", "black"] (绿色应该是它的一部分有争议,但我决定省略它)

我想将数组元素加倍,以便按顺序返回rangers = ["red", "red", "blue", "blue", "yellow", "yellow", "pink", "pink", "black", "black"]

我试着环顾四周,但我找不到按顺序这样做的方法。 (rangers *= 2无法工作)。

我也试过rangers.map{|ar| ar * 2} #=> ["redred", "blueblue",...]

我尝试了rangers << rangers #=> ["red", "blue", "yellow", "pink", "black", [...]]

如何复制元素以在其旁边返回重复元素值?另外,如果可能的话,我想复制它 n 次,所以当n = 3时,它会返回["red", "red", "red", "blue", "blue", "blue", ...]

1 个答案:

答案 0 :(得分:8)

怎么样

rangers.zip(rangers).flatten

使用Array#zipArray#flatten

可能会针对您的第二个请求更好地推广的解决方案可能是:

rangers.flat_map { |ranger| [ranger] * 2 }

使用Enumerable#flat_map。 在这里,您只需将2替换为任何值或变量。