好吧,說我有一個數組像這樣[[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-最高優先字母后的字母) –