ruby - 用每个第 n 个元素压缩数组

标签 ruby arrays

有没有一种方法可以使用 zip 来压缩 2 个数组,并在 n 个元素之间留出空格,例如:

a = [1,2,3,4,5,6,7,8,9,10]
b = ["x","y","z"]
n = 3

结果会是

res = [[1,"x"],2,3,[4,"y"],5,6,[7,"z"],8,9,10] # note that 10 is alone and b is not cycled

最佳答案

我会写:

res = a.each_slice(n).zip(b).flat_map do |xs, y| 
  y ? [[xs.first, y], *xs.drop(1)] : xs
end
#=> [[1, "x"], 2, 3, [4, "y"], 5, 6, [7, "z"], 8, 9, 10]

关于ruby - 用每个第 n 个元素压缩数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085741/

相关文章:

javascript - 使用选择下拉列表使用 ruby​​ on Rails 参数更新 link_to

ruby-on-rails - 如何正确检查 ruby​​ 中的嵌套值

Ruby:根据整数数组对对象数组进行排序

android - 图像 Uri 到字节数组

ruby - ruby 在线快速计算环境

ruby-on-rails - 为什么我可以使用 irb 的 RMagick 而不是 rails 控制台?

python - 在 Python 中插值 3d 数组。如何避免for循环?

c - C中将数组和数组指针传递给函数的区别

c# - 将参数传递给需要 "ref System.Array"的方法

java - 如何在java中将数组作为参数传递(仅一行)?