我正在从数据库中提取数据并将其存储在两个数组中,一个数组包含数据的标签,另一个数组包含数据。我需要以某种方式操作数组,以便为每组数据分配一个标签。
现在的数组
标签 - [开发,开发,开发,开发,发布,发布,发布,发布,...]
数据 - [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/