Arrays 按另一个数组排序包含OpenStructs的数组
我有一个包含OpenStruct元素的数组 我想按id属性对它们进行排序,但不是按数字顺序,我可以通过以下方式实现:Arrays 按另一个数组排序包含OpenStructs的数组,arrays,ruby,sorting,Arrays,Ruby,Sorting,我有一个包含OpenStruct元素的数组 我想按id属性对它们进行排序,但不是按数字顺序,我可以通过以下方式实现: a.sort! { |x,y| x.id <=> y.id } 我想以这种方式订购数组 每个a[x]中包含的所有数据都是具有.id属性的OpenStruct。不清楚属性是数字还是字符串。如果是前者,那就做吧 order.map!(&:to_i) 首先。然后做: a.sort_by!{|e| order.index(e.id)} 如果没有重复项,请执行以下
a.sort! { |x,y| x.id <=> y.id }
我想以这种方式订购数组
每个a[x]
中包含的所有数据都是具有.id
属性的OpenStruct。不清楚属性是数字还是字符串。如果是前者,那就做吧
order.map!(&:to_i)
首先。然后做:
a.sort_by!{|e| order.index(e.id)}
如果没有重复项,请执行以下操作:
order & a.map(&:id)
看起来像是家庭作业,到目前为止你都做了什么?不,不是家庭作业。太老了。这是工作。我尝试过像{x | order.index x.id}
之类的方法,以及我发现的其他方法,但我认为可能因为在内部使用OpenStruct,所以一切都不起作用。不确定。@SergioTulentsev你是说我的第二种方法吗?如果要排序的数组只是一个数组数组,那么这种方法就行了。可以在控制台上工作,但一旦我使用OpenStruct,它就会默默地失败。我将改进我的问题以澄清。事实证明,我需要将块中的a.sort\u by!中的order.index(e.id)
转换为整数!{e | order.index(e.id).to_i}
。我认为这可能是因为一些ID没有缓存在order
数组中。可能是这样吗?
order & a.map(&:id)