【问题标题】:Ruby creating a new hash from an array of key, valueRuby 从键、值数组创建新哈希
【发布时间】:2022-01-10 14:08:24
【问题描述】:
first_response = [
  {"xId" => "123", "yId" => "321"}, 
  {"xId" => "x",   "yId" => "y"  }
]

first_response.each do |resp|
  x_id = resp['xId']
  y_id = resp['yId']
  puts x_id.to_s
  puts y_id.to_s
end                                                              
                                                                      

这给了我输出

123
321
x
y  
                                                                       

我要创建的输出哈希是 {123=>{321}, x=>{y}}

第一个服务:我有一个哈希数组,它有两个不同的 id 示例:(x_id 和 y_id)(响应中会有多个这样的对)

我想创建一个哈希值,它应该包含我们从第一个服务中获得的匹配的 x_id 和 y_ids 对,其中 x_id's 作为所有对的键。

【问题讨论】:

  • 您有输入和预期输出的示例,以及您尝试过的内容吗?
  • Hash[[[:a, 1], [:b, 2], [:c, 3]]]=> {:a=>1, :b=>2, :c=>3}
  • { "first_service": [ { "x": "string", "y": "string", "other": { "a": "string", "b": "string ", "c": "string" }, "other-2": { "l": "CONFIRMED", "m": "2021-12-03T15:10:21.330Z", "n": "2021- 12-03T15:10:21.330Z" } } ] } 我想将此分组为 hash_ = { "x": { 'y': "y", } }
  • 我可以遍历第一个服务,并通过一个接一个地遍历第一个服务(分别为 x 和 y),在他们自己的数组中分别获取 x 和 y,但无法分组他们。 # x = [].tap 做 |ids| # first.each 做 |element| # x = element['x'] # ids.push(x) 除非 x.nil? || ids.include?(x) # end # end

标签: ruby-on-rails ruby hash each


【解决方案1】:

看起来这种方法有效,但我不完全确定这是否正确

first_response = [{"xId"=>"123","yId"=> "321"}, {"xId"=>"x","yId"=> "y"}]                         
h = {}.tap do |element|
  first_response.each do |resp|
    x_id = resp['xId']
    y_id = resp['yId']
    element[x_id] = y_id
  end
end
puts h.to_s
# {"123"=>"321", "x"=>"y"}                                      

【讨论】:

    【解决方案2】:

    如果您知道first_response 中的每个哈希都将包含两个键/值对,您可以提取它们的值,然后将结果转换为哈希(参见Enumerable#to_h):

    first_response.to_h(&:values)
    # {"123"=>"321", "x"=>"y"}
    

    【讨论】:

    • 所以使用我分享的上述方法可以获得输出,但我认为我需要在第一个键中添加另一个键并获得像 {"123"=>{"abc" 这样的输出=>321"}, "x"=>{"xyz"=>"y"}},怎么实现呢
    • 你能更新你的问题吗?我不明白你是怎么想出@Dev 那里的那些abc/xyz 键的。
    猜你喜欢
    • 2015-04-19
    • 1970-01-01
    • 2012-03-27
    • 2020-07-02
    • 2023-03-21
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多