好吧,说我有一个数组像这样[[z,1],[d,3],[e,2]],我该如何排序这个数组每个组成阵列的元素?这样我的数组看起来像下面那样? [[z,1],[e,2],[d,3]]?排序一个二维数组的第二个值
回答
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}
# => [[:z, 1], [:e, 2], [:d, 3]]
或者作为用户@Phrogz指出,如果内部阵列具有各自正好有两个要素:
arr.sort_by{|x,y|y} # => [[:z, 1], [:e, 2], [:d, 3]]
arr.sort_by(&:last) # => [[:z, 1], [:e, 2], [:d, 3]]
或者更简单:'arr.sort_by {| s,n | n}'或甚至'arr.sort_by(&:last)'(在Ruby 1.9中)。 – Phrogz
'arr.sort_by(&:last)'也适用于Ruby 1.8.7。 –
@Progrog 由于在ruby 2.4(自2.0甚至在之前)'sort_by'不存在,但只有'sort_by!'和[doc](https://ruby-doc.org/ core-2.4.0/Array.html#method-i-sort_by-21)说: _结果不能保证稳定。当两个键相等时,相应元素的顺序是不可预知的。因此,要使用'sort_by!',您必须具有uniq键。 So @maerics请编辑您的帖子来说或删除'sort_by'。 – noraj
随着用户maerics回答它提供升序sorting.This答案是对我的感谢非常有用的。 对于降序排序我使用 -
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}.reverse
#=> [[:d, 3], [:e, 2], [:z, 1]]
- 1. 按第二个值对二维数组排序
- 2. 第一个和第二个多维数组排序
- 3. 二维Python数组:按第一排序
- 4. 排序在一个二维数组
- 5. 排序一个二维数组
- 6. 排序一个二维数组
- 7. 如何按第一个子数组值排序数组(二维数组)阵列
- 8. 数组排序多维数组以匹配第二个数组
- 9. 遍历一个二维数组来获得第二列的值
- 10. 二维数组的排序
- 11. 如何在MATLAB中对第二排排序二维数组?
- 12. C - 按一维排序二维数组
- 13. 排序二维数组在Perl一排
- 14. 沿着排序的二维numpy数组的轴寻找第一个非零值
- 15. 排序由第二维度的值的二维浮arrray
- 16. 排序第一个数组的顺序第二阵列的
- 17. 排序二维数组PHP
- 18. 对二维数组排序
- 19. 二维数组单排序
- 20. 排序二维Javascript数组
- 21. 排序二维数组与零值
- 22. Javascript:按照第二列desc排序二维数组,然后按第一列asc
- 23. 用一行对二维数组排序
- 24. 字母顺序一个二维数组
- 25. 搜索只是一个二维数组的第一维
- 26. 需要帮助按二元素排序二维数组,然后按第一个元素排序(Java)
- 27. 在一个循环中设置一个数组的第二维
- 28. 二进制搜索按列排序的二维数组只搜索第一列
- 29. 用一个以上的标准对二维数组排序
- 30. 如何根据第二个对二维数组中的第一列进行排序?
请注意,这实际上是一个数组的数组,而不是一个2维数组。 – Phrogz
[按数字排序对象集合(最高优先),然后按字母排序(按字母顺序排列)](http://stackoverflow.com/questions/2232470/sort-a-collection-of-objects-by-number-最高优先字母后的字母) –