【问题标题】:How do I get a specific array index in ruby?如何在 ruby​​ 中获取特定的数组索引?
【发布时间】:2020-05-12 09:45:50
【问题描述】:

我有一个这样的数组

data = [
  {
    "email"=>"name1@mail.com",
    "id"=>001,
    "name"=>"Name 1"
  },
  {
    "email"=>"name2@mail.com",
    "id"=>002,
    "name"=>"Name 2"
  },
]

我想按名称选择

name = data.select {|x| x[:name] == "Name 1"}

结果是

[
  {
    "email"=>"name1@mail.com",
    "id"=>001,
    "name"=>"Name 1"
  }
]

我得到了我想要的,但如果我只想得到 id 怎么办?

我希望得到这样的结果:001

【问题讨论】:

    标签: arrays ruby-on-rails ruby


    【解决方案1】:

    根据您所处的场景,有不同的方法可以满足您的需求。

    如果您只需要来自单个对象的id 键/值,则可以使用find

    data.find { |x| x['name'] == 'Name 1' }['id']
    # 1
    

    另一方面,如果您需要多个,并使用select 过滤它们,那么您可以从每个结果对象映射id

    data.select { |x| x['name'] == 'Name 1' }.map { |x| x['id'] }
    # [1]
    

    【讨论】:

    • 非常感谢
    最近更新 更多