arrays - 对作为哈希值的数组的数组进行排序

标签 arrays ruby sorting hash

我看到了几篇关于对作为散列值的数组进行排序的帖子,但我正在尝试对作为散列值的数组的数组进行排序。 我有一个看起来像这样的散列:

h = { 
      "pets"=>[["dog", 1], ["cat", 2]],
      "fruits"=>[["orange", 1], ["apple", 2]]
     }

我想根据内部数组的第一个元素(字符串)对数组数组进行排序。 所以我希望结果是

{ 
  "pets"=>[["cat", 2], ["dog", 1]],
  "fruits"=>[["apple", 2], ["orange", 1]]
}

这是我现在拥有的:

h.map do |key, value|
  value.sort_by! { |x, y| x[0] <=> y[0] }
end

但这只是返回原始数组。我需要改变什么? 谢谢!

最佳答案

不可变版本,没有副作用:

h.map { |k, v| [k, v.sort_by(&:first)] }.to_h

关于arrays - 对作为哈希值的数组的数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891226/

相关文章:

algorithm - 找到快速排序中位数的中位数

c - 从括号中读取并将其转换为数组

javascript - AJAX 请求从包含对象的数组中提取信息

php - 组合两个数组值,使它们成为 key=>value 格式

对象散列的 Ruby 递归映射

ios - 不想按排序顺序对参数进行排序 alamofire

c# - 通过 C# 中的属性检索嵌套 Powershell 对象的值

ruby - 如何从数组构建散列

ruby-on-rails - Rails number_field_tag 传递哈希值

jquery - 在 jQuery DataTables 中使用 anchor 标记对列进行排序