尝试在ruby中转换此哈希的结构

问题描述 投票:1回答:3

我有此哈希:

{
  :items => {
    :"cust.category" => "Jackets,Belts & Buttons",
    :"items.receive_dt" => "2 years",
    :"prdcts.brand" => "Armani"
  }
}

我正在尝试更改此哈希使其变为->

{
  :items => ["cust.category=Jackets,Belts & Buttons", 
    "items.receive_dt=2 years", 
    "prdcts.brand=Armani"]
}

我尝试了几件事,但无法正确完成

ruby
3个回答
1
投票
h = {
  :items=>{
     :"cust.category"=>"Jackets,Belts & Buttons",
     :"items.receive_dt"=>"2 years",
     :"prdcts.brand"=>"Armani"
}

h.transform_values { |g| g.map { |a| a.join('=') } }
  #=> {:items=>["cust.category=Jackets,Belts & Buttons",
  #             "items.receive_dt=2 years",
  #             "prdcts.brand=Armani"]
  #   } 

请参见Hash#transform_values


0
投票

您已将此标签标记为Ruby,但是您显示的语法不是有效的Ruby代码...但是,假设您正在Ruby中寻找答案:-)

您的哈希看起来像:

hash = {
  'items' => {
    'cust.category' => 'Jackets,Pants,Hoodies & Sweatshirts,Accessories',
    'items.receive_dt' => '2 years',
    'prdcts.brand' => 'Armani'
  }
}

然后您可以使用map更改哈希:

hash['items'] = hash['items'].keys.map { |key| "#{key}=#{hash['items'][key]}" }

然后,最后的hash看起来像:

{"items"=>["cust.category=Jackets,Pants,Hoodies & Sweatshirts,Accessories", "items.receive_dt=2 years", "prdcts.brand=Armani"]}

0
投票

Ruby 2.7,Hash#to_h

hash = {
  :items => {
    :"cust.category" => "Jackets,Belts & Buttons",
    :"items.receive_dt" => "2 years",
    :"prdcts.brand" => "Armani"
  }
}

pp hash.to_h { |k, v| [k, v.map { |e| e.join('=') }] }

输出

{:items=>
  ["cust.category=Jackets,Belts & Buttons",
   "items.receive_dt=2 years",
   "prdcts.brand=Armani"]
}
© www.soinside.com 2019 - 2024. All rights reserved.