首页 > 解决方案 > 基于元素值的 Ruby 数组到子数组

问题描述

我正在尝试解析一个文本文件,并希望得到一些 Ruby 帮助,基于对某些值的搜索和过滤,将数组转换为一系列子数组,主要是零的存在。在这种情况下,每个子数组应该只包含一对 00Mom 和 00Dad 加上后面没有零的元素(例如孩子),但不包括 00Mom 和 00Dad 的下一个实例——这将进入下一个子数组.

例如,使用此数组:

array1 = ["00Mom1", "00Dad1", "Kid1", "Kid2", "00Mom2", "00Dad2", "Child1", "Child2", "00Mom3", "Youngin1"]

我想输出这个子数组数组:

array2 = [["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom2", "00Dad2", "Child1", "Child2"], ["00Mom3", "Youngin1"]]

我的第一个想法是在计数中使用“00”,但我无法让它工作。我认为解决方案可能是使用嵌套数组,但不确定。这就是我到目前为止所拥有的。

array1 = ["00Mom1", "00Dad1", "Kid1", "Kid2", "00Mom2", "00Dad2", "Child1", "Child2", "00Mom3", "Youngin1"]
zero_count = 0
array2 = []
new_array = []
subarray_count = 0

array1.map do |z|

  if z[0] == "0"
    zero_count = zero_count + 1
  end

  if zero_count == 3
    new_array = array1.slice(0, subarray_count)
    zero_count = 1
    subarray_count = 0
    array2 << new_array

  end

  subarray_count = subarray_count + 1

end

p array2

输出:

[["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom1", "00Dad1", "Kid1", "Kid2"]]

但是我需要:

[["00Mom1", "00Dad1", "Kid1", "Kid2"], ["00Mom2", "00Dad2", "Child1", "Child2"], ["00Mom3", "Youngin1"]]

有任何想法吗?谢谢。

标签: arraysruby

解决方案


推荐阅读