【问题标题】:Query an array of hashes (Rails 5.2)查询哈希数组(Rails 5.2)
【发布时间】:2019-03-08 01:50:44
【问题描述】:
data = [
          {  name: :name, model:    :Address, field_type:   :string },
          {  name: :country, model: :Address, field_type:   :string },
          {  name: :street , model: :Address, field_type:   :string },
          {  name: :city , model:   :Address, field_type:   :string },
          {  name: :count , model:  :Property, field_type:  :integer }, 
          {  name: :count2 , model: :Property, field_type:  :integer } ,
          {  name: :count3 , model: :Property, field_type:  :integer } ,
          {  name: :count3 , model: :Property, field_type:  :integer }
      ]

我有一个哈希数组,我想查询哈希值。我想知道最有效和最推荐的解决方案。

例如,我可能需要找到所有 :integer 的哈希名称。或者我可能想查询所有模型的名称:地址。或者我可能需要将所有 field_types 查询为唯一的。

我可以直接查询哈希数组吗?如果是这样,如果没有,是否有更好的方法使用主动模型或其他方法?

【问题讨论】:

  • 如果它是散列的散列,那么它缺少一些值或键。例如:data = { 1: {name: :name, model: :Address, field_type: :string}}
  • 抱歉,我的意思是哈希数组,已修复

标签: ruby-on-rails ruby ruby-on-rails-5.2


【解决方案1】:

你有一个“普通”的哈希数组。您可以使用 Ruby 方法:

data = [
  {  name: :name, model: :Address, field_type: :string },
  {  name: :country, model: :Address, field_type: :string },
  {  name: :street, model: :Address, field_type: :string },
  {  name: :city, model: :Address, field_type: :string },
  {  name: :count, model: :Property, field_type: :integer }, 
  {  name: :count2, model: :Property, field_type: :integer },
  {  name: :count3, model: :Property, field_type: :integer },
  {  name: :count3, model: :Property, field_type: :integer }
]

p data.select { |val| val[:field_type] == :integer }.map { |val| val[:name] }
# [:count, :count2, :count3, :count3]
p data.select { |val| val[:model] == :Address }.map { |val| val[:name] }
# [:name, :country, :street, :city]
p data.uniq { |val| val[:field_type]  }
# [{:name=>:name, :model=>:Address, :field_type=>:string}, {:name=>:count, :model=>:Property, :field_type=>:integer}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-12
    • 2015-11-27
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多