【问题标题】:elegant way of preparing a string from hash values从哈希值准备字符串的优雅方式
【发布时间】:2020-12-08 07:20:59
【问题描述】:

下面是我的哈希

my_hash = {
  "unique_id": [
    {
      "code": "1001",
      "message": "The unique id has already been taken."
    }
  ]
}

我想根据上面的哈希值准备一个字符串。前任。 "1001-The unique id has already been taken."

到目前为止,我能够得到以下结果

my_hash.values.flatten.map {|a| a.values.join('-')}.join(',')

我想知道有没有更好的方法。

更新:my_hash 可以有多个哈希值。

{"unique_id":[{"code":"1001","message":"The unique id has already been taken."}], "user_id":[{"code":"1002","message":"The user id has already been taken."}]}

并且期望值"1001-The unique id has already been taken.,1002-The user id has already been taken."

【问题讨论】:

  • 更新了预期的字符串@CarySwoveland
  • 除非需要,否则通常不包含带符号的引号(例如,当一个符号由多个单词组成时::"my dog saffi")。 "code": "1001"code: "1001":"code" => "1001":code => "1001" 都是等价的。
  • @CarySwoveland 即使哈希是{:unique_id=>[{:code=>"1001", :message=>"The unique id has already been taken."}], :user_id=>[{:code=>"1002", :message=>"The user id has already been taken."}]} 如何缩短我丑陋的代码?
  • 如果同一属性有多个错误,预期的输出是什么?

标签: ruby-on-rails ruby ruby-hash


【解决方案1】:

这是一个较短的版本:

my_hash[:unique_id].first.values.join("-")

【讨论】:

  • 我更新了我的哈希评论@Camillle。哈希可以有多个值。
【解决方案2】:
my_hash = {"unique_id":[{"code":"1001","message":"The unique id has already been taken"}],"user_id":[{"code":"1002","message":"The user id has already been taken"}]} 


my_hash.flat_map {|k,v| v.map(&:values).join '-'}.to_sentence

my_hash.flat_map {|k,v| v.map(&:values).join '-'}.join ','

【讨论】:

    【解决方案3】:
    my_hash = {"unique_id":[{"code":"1001","message":"The unique id has already been taken."}], "user_id":[{"code":"1002","message":"The user id has already been taken."}]}
    
    my_hash.values.map{|v| v.map{|a| "#{a[:code]}-#{a[:message]}"}}.flatten.join(",")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 2011-12-09
      • 1970-01-01
      • 2011-04-25
      • 2012-02-19
      相关资源
      最近更新 更多