Duplicate elements of array in ruby

后端 未结 4 1135
眼角桃花
眼角桃花 2021-01-25 12:11

I find a lot of reference about removing duplicates in ruby but I cannot find how to create duplicate.

If I have an array like [1,2,3] how can I map it to a

相关标签:
4条回答
  • 2021-01-25 12:51

    Try this:

    [1, 2, 3] * 2
    
     => [1, 2, 3, 1, 2, 3] 
    

    You might want it sorted:

    ([1, 2, 3] * 2).sort
    
     => [1, 1, 2, 2, 3, 3] 
    
    0 讨论(0)
  • 2021-01-25 13:01

    Here's yet another way, creating the array directly with Array#new :

    array = [1, 2, 3]
    repetitions = 2
    
    p Array.new(array.size * repetitions) { |i| array[i / repetitions] }
    # [1, 1, 2, 2, 3, 3]
    

    According to fruity, @ursus's answer, @ilya's first two answers and mine have comparable performance. transpose.flatten is slower than any of the others.

    0 讨论(0)
  • 2021-01-25 13:06

    @Ursus answer is the most clean, there are possible solutions:

    a = [1, 2, 3]
    a.zip(a).flatten
    #=> [1, 1, 2, 2, 3, 3]
    

    Or

    a.inject([]) {|a, e| a << e << e} #  a.inject([]) {|a, e| n.times {a << e}; a}
    => [1, 1, 2, 2, 3, 3]
    

    Or

    [a, a].transpose.flatten # ([a] * n).transpose.flatten
    => [1, 1, 2, 2, 3, 3]
    
    0 讨论(0)
  • 2021-01-25 13:08

    Try this one

    [1, 2, 3].flat_map { |i| [i, i] }
     => [1, 1, 2, 2, 3, 3] 
    
    0 讨论(0)
提交回复
热议问题