簡體   English   中英

Ruby在數組的哈希中選取一個值以重新格式化為哈希

[英]Ruby pick up a value in hash of array to reformat into a hash

有沒有辦法在array hash中選擇一個value ,並將其重新格式化為僅哈希?

有什么辦法可以解決嗎?

[
  {
    "qset_id" => 1,
    "name" => "New1"
    },
  {
    "qset_id" => 2,
    "name" => "New2"
  }
]

結果

{
  1 => {
      "name" => "New1"
  },
  2 => {
        "name" => "New2"
    }
}

您基本上可以使用array或hash上的reduce函數進行任意操作,例如,這將獲得結果

array.reduce({}) do |result, item|
  result[item["qset_id"]] = { "name" => item["name"] }
  result
end

您可以對each.with_object做同樣的事情:

   array.each.with_object({}) do |item, result|
     result[item["qset_id"]] = { "name" => item["name"] }
   end

這基本上是同一件事,但是您不必每次迭代都返回結果(稱為“備注對象”)。

您可以遍歷第一個哈希並將其映射到第二個哈希:

h1.map{|h| {h['qset_id'] => {'name' => h['name']}} }
# => [{1=>{"name"=>"New1"}}, {2=>{"name"=>"New2"}}]

...但是那會返回一個數組。 您可以將元素放入第二個哈希中,如下所示:

h2 = {}
h1.each do |h| 
  h2[h['qset_id']] = {'name' => h['name']}
end
>> h2
=> {1=>{"name"=>"New1"}, 2=>{"name"=>"New2"}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM