ruby - 比较和排序 Ruby 中的哈希数组

标签 ruby

我有两个数组。它们具有不同的属性。

array1 = [{name: "apple", quantity: 2}, {name: "grape", quantity: 10}, {name: "pear", quantity: 3}]
array2 = [{name: "grape", freshness: 9}, {name: "apple", freshness: 7}, {name: "pear", freshness: 10}]

我想根据 array2 的顺序按名称对 array1 进行排序。结果将是:

array1 = [{name: "grape", quantity: 10}, {name: "apple", quantity: 2}, {name: "pear", quantity: 3}]

最佳答案

您可以构建一个name => index 散列:

h = array2.map { |e| e[:name] }.each_with_index.to_h
#=> {"grape"=>0, "apple"=>1, "pear"=>2}

然后按哈希排序:

array1.sort_by { |e| h[e[:name]] }
#=> [{:name=>"grape", :quantity=>10}, {:name=>"apple", :quantity=>2}, {:name=>"pear", :quantity=>3}]

关于ruby - 比较和排序 Ruby 中的哈希数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484670/

相关文章:

javascript - 具有多个用户的 FullCalendar

Ruby:Hash.new 在这里做什么

ruby - 像 Ruby 'exec' 但对于 Node.js?

Objective-C 相当于 Ruby 中的 string.unpack ('N' )

ruby - 如何测试 rspec 中方法调用的顺序?

Ruby regex- gsub 存储它匹配的内容吗?

ruby-on-rails - 如何从自定义类访问 'request' 对象(或类似对象)?

mysql - 根据数据库记录过滤数组

ruby - 如何在 Ruby 中仅使用其实例变量重新打开一个类?

html - 注销 Rails 时 CSS 发生变化