在Ruby中比较和排序哈希数组

我有两个数组.它们具有不同的属性.
array1 = [{name: "apple",quantity: 2},{name: "grape",quantity: 10},{name: "pear",quantity: 3}]
array2 = [{name: "grape",freshness: 9},{name: "apple",freshness: 7},freshness: 10}]

我想根据array2的顺序对array1进行排序.结果将是:

array1 = [{name: "grape",quantity: 3}]

解决方法

根据您当前的数据结构,这是一种简单的方法.
array1 = array1.sort_by { |x| array2.find_index { |y| y[:name] == x[:name] } }

但是,请注意find_index需要O(n)时间.这可以通过为您的数据使用不同的模型或进行一些预处理(例如,参见Stefan的答案)来改进.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...