我有两个这样的数组: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]。我很困惑这是正确的方式,我只是犯了错误,或者有其他方法来解决我的问题。有人能帮助我吗?
答案 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}