【问题标题】:Creating an array from an array of hashes in ruby从 ruby​​ 中的哈希数组创建一个数组
【发布时间】:2012-10-12 07:29:23
【问题描述】:

我有一个哈希数组。

兔子 = [{:color=>"blue", :height=>5, :name=>"Charles"}, {:color=>"red", :height=>12, :name=>" Henry"}, {:color=>"green", :height=>7, :name=>"Francis"}, {:color=>"purple", :height=>3, :name=>"William" }]

如何从这个仅包含 :height 的数组创建一个数组?

我试过了:rabbits.map(&:height)rabbits.map{|i| i.height} 但都没有成功。

目标是拥有height_array = [5, 12, 7, 3]

【问题讨论】:

    标签: ruby arrays


    【解决方案1】:

    这会起作用

    rabbits.map{|c| c[:height] }
    

    您尝试的其他两种方法期望 heightc 上的方法,但事实并非如此。

    【讨论】:

    • 非常感谢!我试过了,但没有将它存储为新数组。因此,当我尝试在下一行打印猫时,它给了我原件。再次感谢。
    • 要重写原始数组使用cat.map! ...(注意感叹号)。但我会将其保存到另一个变量 ages = cats.map ...
    • 谢谢塞尔吉奥。我不知道那件事。回答接受。 :)
    • 我被要求编辑这个问题,因为它是编码挑战的一部分,策展人担心未来的学生会找到这个问题并将其用于他们的答案。 cats.map 应该等于 rabbits.mapcats_age 应该等于 height 。很抱歉给您带来不便。 :(
    【解决方案2】:
    arr = cats.collect{|c| c[:cats_age] }
    

    【讨论】:

    • 那是map 的别名,不是吗? :)
    • @Salil 我被要求编辑这个问题,因为它是编码挑战的一部分,策展人担心未来的学生能够找到它并将其用于他们的答案。 cats.collect 应该等于 rabbits.collectcats_age 应该等于 height 。很抱歉给您带来不便。 :(
    【解决方案3】:
    rabbits.inject([]) {|height,hash| height << hash[:height]}
    

    【讨论】:

    • 在我看来,在这里使用inject 有点过分了:)
    • 确实如此,但只是作为一个选项列出来
    • @AshishSaihgal 我被要求编辑这个问题,因为它是编码挑战的一部分,策展人担心未来的学生能够找到它并将其用于他们的答案。 cats.inject 应该等于 rabbits.injectcats_age 应该等于 height 。很抱歉给您带来不便。 :(
    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2022-01-10
    • 2023-03-21
    • 2015-04-19
    • 2021-06-24
    相关资源
    最近更新 更多