Ruby实现将数组按指定长度分组为嵌套数组的方法
Ruby方法实现:按指定长度拆分数组为嵌套数组
需求说明
编写一个名为organize_depths的Ruby方法,接收两个参数:
- 第一个参数:任意长度的数组
- 第二个参数N:每个嵌套数组的目标长度(最后一组长度可小于N,但不能超过N)
示例代码
# 输入数组 water_depths = [32, 45, 12, 59, 14, 30, 11, 1, 20, 17, 18, 18, 40, 100, 399, 987, 210] # 目标每组长度 n = 3 def organize_depths(arr, n) arr.each_slice(n).to_a end # 调用方法后的结果 # => [[32, 45, 12], [59, 14, 30], [11, 1, 20], [17, 18, 18], [40, 100, 399], [987, 210]]
代码解释
Ruby内置的Array#each_slice方法完美适配这个需求:
each_slice(n)会将原数组按每n个元素为一组分割,返回一个枚举器对象- 调用
to_a将枚举器转换为嵌套数组,最后一组如果剩余元素不足n个,会直接保留剩余的所有元素,完全符合题目对最后一组的要求
可选边界处理
如果需要兼容n为非正整数的异常场景,可以添加参数校验:
def organize_depths(arr, n) return [] if n < 1 arr.each_slice(n).to_a end
内容的提问来源于stack exchange,提问作者Sam Terano
相关产品推荐
相关产品推荐

