You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails中如何按指定数量提取数组元素拆分存入多个新数组

Ruby按固定长度拆分数组实现方案

你可以直接用Ruby内置方法实现按指定数量拆分元素的需求,不需要手写遍历逻辑,以下是两种常用实现:


方法1:使用each_slice方法(不修改原数组,推荐)

each_slice是Ruby数组原生提供的分组方法,会按指定长度把数组切分为多个分组,全程不改动原始数组内容,适配你给出的示例的代码如下:

# 初始完整数组
original_array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]

# 按每7个元素为一组拆分,得到二维分组数组
groups = original_array.each_slice(7).to_a

# 按顺序取值赋值即可
array2 = groups[0] # => [1,2,3,4,5,6,7]
array3 = groups[1] # => [8,9,10,11,12,13,14]
array = groups[2..].flatten # => [15,16,...,40],即拆分后剩余的所有元素

如果数组总长度不是7的整数倍,最后一组会自动收纳剩余不足7个的元素,不会报错或填充空值。


方法2:使用shift方法(直接修改原数组)

如果你不需要保留原始的完整数组,可以用shift方法直接从数组头部取出指定数量的元素,代码更简短:

array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]
array2 = array.shift(7) # 从数组头部移除并返回前7个元素
array3 = array.shift(7) # 再次从头部移除并返回接下来的7个元素
# 执行完以上两步后,array变量存储的就是拆分后剩余的[15,16,...,40],无需额外赋值

  • 优先选each_slice方案,避免修改原始数组带来的不可预期的副作用
  • 两个方法都是Ruby内置实现,不需要引入任何第三方依赖,Rails环境和纯Ruby环境都可以直接使用

内容的提问来源于stack exchange,提问作者Roberto da Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:21:33