我有两个数组。它们具有不同的属性。
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/