📜  如何在 ruby 中对数组进行分组(1)

📅  最后修改于: 2023-12-03 15:38:26.305000             🧑  作者: Mango

Ruby 中对数组进行分组

在 Ruby 中,可以使用 group_by 方法对数组进行分组。该方法接受一个块,用于指定分组依据,返回一个 hash,其中键是分组依据的值,值是属于该组的元素数组。

语法
array.group_by { |element| block }

其中,array 是待分组的数组,block 用于指定分组依据。

示例

假设有一个数组 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们希望将所有奇数和偶数分别分组,可以如下实现:

numbers.group_by { |n| n % 2 }

执行上述代码,返回结果如下:

{1=>[1, 3, 5, 7, 9], 0=>[2, 4, 6, 8, 10]}

可以看到,分组依据是 n % 2,即余数为 1 的元素放在奇数组,余数为 0 的元素放在偶数组。

处理复杂结构

如果待分组的数组中,元素是复杂结构,我们也可以使用 group_by 方法进行分组。

例如,假设有一个存放用户信息的数组 users,其中每个元素是一个 hash,包含 :name:age 两个键值对,我们可以根据年龄分组:

users.group_by { |user| user[:age] }

执行上述代码,返回结果如下:

{
  20=>[
    {:name=>"Alice", :age=>20},
    {:name=>"Bob", :age=>20},
    {:name=>"Charlie", :age=>20}
  ],
  25=>[
    {:name=>"Dave", :age=>25},
    {:name=>"Eve", :age=>25}
  ]
}

以上就是在 Ruby 中对数组进行分组的介绍,希望对你有所帮助。