我有一个数组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", ...]
答案 0 :(得分:8)
怎么样
rangers.zip(rangers).flatten
可能会针对您的第二个请求更好地推广的解决方案可能是:
rangers.flat_map { |ranger| [ranger] * 2 }
使用Enumerable#flat_map
。
在这里,您只需将2
替换为任何值或变量。