我一直在寻找一种使用另一个数组对数组进行排序的方法。 Here是一个对我有用的答案:
a1 = [34, 54, 12, 43]
a2 = [ {id: 54, name: "greg"}, {...}, {...}, {...} ]
a2.sort_by{|x| a1.index x.id}
这段小代码发生了什么?
答案 0 :(得分:2)
这里发生的是sort_by
使用您传递给它的块将数组映射到可排序元素。这样,可以使用<=>
方法比较元素。所有可比对象必须实现此方法,在本例中为整数。
sort
使用排序算法(可能不是冒泡排序,将块的返回值作为要排序的值。
所以,这个表达式:
a2.sort_by { |x| a1.index x.id }
...会产生与跑步相同的结果:
a2.map { |x| a1.index x.id }.sort
...其中x.index(x.id)
返回a1
数组中当前元素的id属性的索引。