Ruby中数组中对象的值排序

Ruby中数组中对象的值排序,ruby,arrays,sorting,Ruby,Arrays,Sorting,我在一个数组中有一组对象,并希望按每个对象的值进行排序。每个对象中有问题的属性都是数值 例如: [[1, ..bunch of other stuff],[5, ""],[12, ""],[3, ""],] 将成为: [[1, ..bunch of other stuff],[3, ""],[5, ""],[12, ""],] 我想根据存储在每个对象中的数值进行排序 [5,3,4,1,2]变为[1,2,3,4,5],但是这些数字存储在对象中。在比较元素时,排序方法可能需要使用一个块: lst

我在一个数组中有一组对象,并希望按每个对象的值进行排序。每个对象中有问题的属性都是数值

例如:

[[1, ..bunch of other stuff],[5, ""],[12, ""],[3, ""],]
将成为:

[[1, ..bunch of other stuff],[3, ""],[5, ""],[12, ""],]
我想根据存储在每个对象中的数值进行排序


[5,3,4,1,2]
变为
[1,2,3,4,5]
,但是这些数字存储在对象中。

在比较元素时,
排序方法可能需要使用一个块:

lst = [[1, 'foo'], [4, 'bar'], [2, 'qux']]
=> [[1, "foo"], [4, "bar"], [2, "qux"]]
srtd = lst.sort {|x,y| x[0] <=> y[0] }
=> [[1, "foo"], [2, "qux"], [4, "fbar"]]
lst=[[1',foo'],[4',bar'],[2',qux']]
=>[[1,“foo”],[4,“bar”],[2,“qux”]]
srtd=lst.sort{| x,y | x[0]y[0]}
=>[[1,“foo”],[2,“qux”],[4,“fbar”]]

假设您只想根据第一个元素进行排序

[[1, ..bunch of other stuff],[5, ""],[12, ""],[3, ""],].
sort_by{|n, *args| n}


对对象和复杂结构进行排序时,请使用。Sort_by执行一个“”命令,该命令可在排序速度上产生重大差异


因为您没有提供足够的可用信息,我建议您阅读上面链接的文档。你会发现它很容易实现,并且可以带来很大的不同。

其他答案很好,但不是最小的。这个怎么样

lst.sort_by &:first

你的问题模棱两可。您想按每个数组的第一个元素排序,还是按第一个元素和第二个元素排序,依此类推?您在解释代码及其作用方面投入的精力越多,您将得到越好的答案。提供一个简单的代码示例,显示对象,或者至少是要用于排序的属性。@Peter。。。谢谢你,只有一件事。第一个是什么意思。。。学习ruby已经有两天了,别以为我遇到过。是的,有点奇怪:)。看,谢谢你。进行排序时,是否仍要引用对象中的属性。例如,该属性称为数值。那么,您是否可以在此而不是数组中的预定义位置上执行排序?Thanks@Julio:是的,绝对是。然后块体将是“x.numeric\u value y.numeric\u value”
lst.sort_by &:first