排序基于另一个数组的顺序排列的阵列(红宝石) [英] Sort an array of array based on the order of another array(Ruby)
本文介绍了排序基于另一个数组的顺序排列的阵列(红宝石)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个数组是这样的: ARR1 = [1,名称2,NAME3]
和 ARR2 = [[name1,10],[NAME3 ,15],[NAME2,20]
。现在,我要排序的 ARR2
根据 ARR1
的顺序。 ARR2
的顺序会改变 ARR1
变化时的顺序。我试试这个:
hash_object = arr2.each_with_object({})做| OBJ,哈希|
哈希[obj.name] = OBJ
结束arr1.map {|首页| hash_object [指数]}
但结果返回[零,零,零。我困惑的,这是正确的方式,我只犯的错误,还是有解决我的问题的另一个方面。有人可以帮我吗?
解决方案
ARR1 = [NAME1,NAME2,NAME3]
= GT; [NAME1,NAME2,NAME3]
ARR2 = [[名称1,10],[NAME3,15],[名称2,20]
= GT; [名称1,10],[NAME3,15],[名称2,20]
arr2.sort_by {| E | arr1.index(E [0])}
= GT; [名称1,10],[名称2,20],[NAME3,15]
I have two arrays like this: arr1 = [name1, name2,name3]
and arr2 = [[name1,10], [name3,15], [name2, 20]]
. Now I want to sort the arr2
based on the order of arr1
. The order of arr2
will change whenever order of arr1
change. I try this:
hash_object = arr2.each_with_object({}) do |obj, hash|
hash[obj.name] = obj
end
arr1.map { |index| hash_object[index] }
But the result returned [nil, nil, nil]. I confused of this is the right way, and I only made mistake or are there another ways to solve my problem. Can someone help me?
解决方案
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]]
这篇关于排序基于另一个数组的顺序排列的阵列(红宝石)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文