Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 按另一个数组排序包含OpenStructs的数组_Arrays_Ruby_Sorting - Fatal编程技术网

Arrays 按另一个数组排序包含OpenStructs的数组

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)} 如果没有重复项,请执行以下

我有一个包含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)}
如果没有重复项,请执行以下操作:

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)