根据另一个数组(Ruby)的顺序对数组数组进行排序

时间:2015-05-26 03:15:36

标签: arrays ruby

我有两个这样的数组:arr1 = [name1, name2,name3]arr2 = [[name1,10], [name3,15], [name2, 20]]。现在我想根据arr2的顺序对arr1进行排序。只要arr2的顺序发生变化,arr1的顺序就会发生变化。我试试这个:

hash_object = arr2.each_with_object({}) do |obj, hash| 
  hash[obj.name] = obj
end

arr1.map { |index| hash_object[index] }

但结果返回[nil,nil,nil]。我很困惑这是正确的方式,我只是犯了错误,或者有其他方法来解决我的问题。有人能帮助我吗?

3 个答案:

答案 0 :(得分:6)

我会做这样的事情:

arr2.sort_by { |element| arr1.index(element.first) }

答案 1 :(得分:1)

arr1 = ["name1", "name2", "name3"]
=> ["name1", "name2", "name3"]
arr2 = [["name1",10], ["name3",15], ["name2", 20]]
=> [["name1", 10], ["name3", 15], ["name2", 20]]
arr2.sort_by { |e| arr1.index(e[0]) }
=> [["name1", 10], ["name2", 20], ["name3", 15]]

答案 2 :(得分:0)

这是另一种方式:

{"number":1,"value":1,"newValue":0}