Arrays 对散列值数组进行排序

Arrays 对散列值数组进行排序,arrays,ruby,sorting,hash,Arrays,Ruby,Sorting,Hash,我有一个散列,其中键是整数,值是字符串数组。然后我需要按字母顺序对数组中的项进行排序,并将排序后的数组作为新的哈希值返回 我认为类似于hash.map{| k,v | v.sort}的东西会起作用,但是,不。为了更明确一点,我需要转向: hash = { 0 => ["c", "d", "b", "a"], 1 => ["e", "q", "x", "m"] } 进入: 试试这个 hash.each { |k,v| v.sort! } 这将对阵列进行排序。试试这个 hash.ea

我有一个散列,其中键是整数,值是字符串数组。然后我需要按字母顺序对数组中的项进行排序,并将排序后的数组作为新的哈希值返回

我认为类似于
hash.map{| k,v | v.sort}
的东西会起作用,但是,不。为了更明确一点,我需要转向:

hash = { 0 => ["c", "d", "b", "a"], 1 => ["e", "q", "x", "m"] }
进入:

试试这个

hash.each { |k,v| v.sort! }
这将对阵列进行排序。

试试这个

hash.each { |k,v| v.sort! }
这将对阵列进行适当排序。

这是一种方法:

 hash.each_value { |v| v.sort! }
 #=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]} 
或者更简洁地说:

hash.each_value(&:sort!)
但是,如果希望保留原始哈希,请执行以下操作:

hash.map { |k,v| [k,v.sort] }.to_h
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]} 
这是一种方式:

 hash.each_value { |v| v.sort! }
 #=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]} 
或者更简洁地说:

hash.each_value(&:sort!)
但是,如果希望保留原始哈希,请执行以下操作:

hash.map { |k,v| [k,v.sort] }.to_h
#=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]} 

这不会改变原始散列

hash.merge(hash) { |*,n| n.sort }
  #=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
如果要修改原始散列,则替换为
merge(又名
更新
)用于
合并


它使用and的形式,并使用块来确定合并的两个哈希中存在的键的值,这里是原始哈希的所有键。有关详细信息,请参阅文档。

这不会改变原始哈希

hash.merge(hash) { |*,n| n.sort }
  #=> {0=>["a", "b", "c", "d"], 1=>["e", "m", "q", "x"]}
如果要修改原始散列,则替换为
merge(又名
更新
)用于
合并


它使用and的形式,并使用块来确定合并的两个哈希中存在的键的值,这里是原始哈希的所有键。有关详细信息,请参阅文档。

我已经尝试了每种方法,但我猜是最好的方法!这是重要的一点。谢谢。我已经试过了每种方法,但我猜是最好的方法!这是重要的一点。谢谢,很好。从不知道每个_值都有一个
方法。将此更改为接受答案b/c彻底性#每个_值(&:sort!)可能是最简单的方法。谢谢,很好。从不知道每个_值都有一个
方法。将此更改为接受答案b/c彻底性#每个_值(&:sort!)可能是最简单的方法。谢谢