Ruby:如何在数组中的每个项目之间插入单个值?

use*_*603 1 ruby arrays

我有一个数组[1,2,3],我想true在每个项目之间插入相同的值 ( ),使其变为:

#=> [1, true, 2, true, 3, true] 
Run Code Online (Sandbox Code Playgroud)

我目前的方法有点啰嗦:

[1,2,3].zip(Array.new(3, true)).flatten
Run Code Online (Sandbox Code Playgroud)

谁能建议一种更优雅的方法来做到这一点?

Seb*_*lma 5

您可以尝试使用flat_map, 并在每个元素后面添加一个true对象:

p [1, 2, 3].flat_map { |e| [e, true] } # [1, true, 2, true, 3, true]
Run Code Online (Sandbox Code Playgroud)

[1,2,3]另一种方法是获得和的乘积[true],并将结果展平:

p [1, 2, 3].product([true]).flatten # [1, true, 2, true, 3, true]
Run Code Online (Sandbox Code Playgroud)