ruby - 如何根据另一个数组中的并行值对一个数组中的数据进行分组?

标签 ruby arrays

我正在从数据库中提取数据并将其存储在两个数组中,一个数组包含数据的标签,另一个数组包含数据。我需要以某种方式操作数组,以便为​​每组数据分配一个标签。

现在的数组

标签 - [开发,开发,开发,开发,发布,发布,发布,发布,...]

数据 - [DevData1、DevData2、DevData3、DevData4、RelData1、RelData2、RelData3、RelData4、...]

我只需要每组数据的标签,但我想将数据分成片段以与单个标签相对应。有四个标签/数据对,因为这是过去四个月的数据。我只是将数组拆分为每 4 个元素,但有些月份没有条目。所以我需要一种更好的方法来分割数据。

任何想法都会很棒。 谢谢。

最佳答案

您可以将单独的数组组合成一个散列,而不需要太多的努力:

a = [:Development, :Development, :Development, :Development, :Release, :Release, :Release, :Release]
b = [:DevData1, :DevData2, :DevData3, :DevData4, :RelData1, :RelData2, :RelData3, :RelData4]
h = Hash.new { |h, k| h[k] = [ ] }
a.each_with_index { |e, i| h[e].push(b[i]) }
# h is now {:Development=>[:DevData1, :DevData2, :DevData3, :DevData4], :Release=>[:RelData1, :RelData2, :RelData3, :RelData4]}

只要确保使用Hash.new { |h,k| h[k] = [ ] } 而不是 Hash.new([]) ,否则最终会得到两个指向同一个数组的哈希条目,这只会造成困惑的事情。

引用文献:

关于ruby - 如何根据另一个数组中的并行值对一个数组中的数据进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6931942/

相关文章:

ruby - 使用 Ruby 为无服务器框架编写授权者

javascript - 数组与 Array.prototype.reduce 的交集(集合论)

C编程: How to continue input to array from certain element

php - 删除空数组元素

ios - swift - if 语句和数组

ruby-on-rails - 嵌套 form_for 单一资源

ruby-on-rails - 如何确保同一个作业不会同时运行两次?

ruby - 从 Ruby 文件中读取变量

c++ - 如何格式化数组并输出?

ruby-on-rails - 使用 OR 的 Sunspot/SOLR 查询