【问题标题】:Ruby RoR get keys and values from hash separatelyRuby RoR 分别从哈希中获取键和值
【发布时间】:2017-05-08 17:22:54
【问题描述】:

我有一个这样的哈希:

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 工作表中,这是结果

如果哈希不大,但如果它由 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]] 

【问题讨论】:

    标签: arrays ruby axlsx ruby-hash


    【解决方案1】:

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

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

    【讨论】:

    • 它告诉我undefined method each' for nil:NilClass 这就是为什么我尝试分离键和值以便我可以使用each 方法
    • @media 错误意味着hashnil,仅此而已。仔细检查。
    • 感谢@Andrey Deineko,它正在工作! (这只是我的打字错误)
    • @media 是的,没有问题。
    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多