Ruby RoR分别从散列中获取键和值

时间:2017-05-08 17:22:55

标签: arrays ruby axlsx ruby-hash

我有这样的哈希:

hash = {"str1"=>5, "str2"=>9, "str3"=> 3}

hash.keys结果为["str1", "str2", "str3"]

hash.values结果为[5, 9, 3]

我正在尝试使用Axlsx

将其导出为sheet.add_row的Excel
sheet.add_row [hash.keys[0], hash.values[0]]  # hash.keys[0] = "str1" and  hash.values[0] = 5
sheet.add_row [hash.keys[1], hash.values[1]]  # hash.keys[1] = "str2" and  hash.values[1] = 9
sheet.add_row [hash.keys[2], hash.values[2]]  # hash.keys[2] = "str3" and  hash.values[2] = 3

在Excel工作表中,这是结果

str

如果散列不大但是如果它由20个或更多元素组成,这很简单,这样做这样做根本就不实际! 我希望以更好的方式为哈希的所有元素执行此操作。

sheet.add_row [hash.keys[0], hash.values[0]]  
sheet.add_row [hash.keys[1], hash.values[1]] 
sheet.add_row [hash.keys[2], hash.values[2]] 
........
sheet.add_row [hash.keys[19], hash.values[19]] 

1 个答案:

答案 0 :(得分:6)

只需使用Hash#each迭代每个键值对:

hash = {"str1"=>5, "str2"=>9, "str3"=> 3}
hash.each { |k, v| sheet.add_row [k, v] }