【发布时间】:2018-01-08 14:49:00
【问题描述】:
我有一个 MySQL2::Result 对象@available_items 和
@available_items.each do |row| puts row.values.join("\t ") end
给了我一些看起来像这样的东西:
+------------+--------------+---------- -------------+ |日期 |什么日子 |项目 | +------------+--------------+---------- -------------+ | 2018-01-02 |星期二 | OL,BD,DM,WW,DG | | 2018-01-03 |星期三 | KP,LW | | 2018-01-04 |星期四 | LW,WW,FS,DG | | 2018-01-05 |星期五 | OL,KP,BD,SB,LW,DM,AS,WW,FS,DG | | 2018-01-06 |星期六 | OL,KP,BD,SB,LW,DM,AS,WW,FS,DG | +------------+--------------+---------- -------------+嗯,实际上它看起来像别的东西,但希望你能明白。
我知道默认的 MySQL2 结果输出是哈希,但我不知道如何通过引用第 1 列中的日期来引用第 3 列中的项目(即使用 tdate 作为 @987654324 @ 得到items 为value。)
所以我用 pluck 方法创建了一些感觉像是“脏”的代码来创建一个数组
@available_items.each do |row|
@available_array[0] = @available_items.pluck("tdate")
@available_array[1] = @available_items.pluck("whatDay")
@available_array[2] = @available_items.pluck("items")
end
现在我有一个数组,我可以通过引用数组来调用它,但我真正想要的是hash,其中tdate 是键,items 是值,以便稍后我可以拉对于任何给定日期,items 中逗号分隔列表中的一个(缩写)项目随机放入一个新的哈希(伪代码)中,然后使用其他代码检查该哈希。
@final_list = hash.new()
@final_list[:tdate] = items(randomSelection)
如果我尝试如下创建哈希:
@available_hash = Hash.new()
@available_items.each do |row|
@keyis = @available_items.pluck("tdate")
@valueis = @available_items.pluck("available")
@available_hash[@keyis] = @valueis
end
然后做
@available_hash.each_with_index do |k, v| puts "#{k} : #{v}" end
我明白了:
[[#<Date: 2018-01-02 ((2458121j,0s,0n),+0s,2299161j)>, #<Date: 2018-01-03 ((2458122j,0s,0n),+0s,2299161j)>, #<Date: 2018-01-04 ((2458123j,0s,0n),+0s,2299161j)>, #<Date: 2018-01-05 ((2458124j,0s,0n),+0s,2299161j)>, #<Date: 2018-01-06 ((2458125j,0s,0n),+0s,2299161j)>], nil] : 0
看起来它只是将所有内容都放入一行。
我有一种感觉,我试图太复杂,而且我误解了如何附加到哈希。
所以问题是:我如何创建哈希,其中每个 {key,value} 对看起来像 {tdate: items},每个日期都有一个新对。
提前致谢。
【问题讨论】: