Ok, giả sử tôi có một mảng như vậy [[z, 1], [d, 3], [e, 2]], làm cách nào để sắp xếp mảng này theo thứ hai phần tử của mỗi mảng cấu thành? Vì vậy, mảng của tôi sẽ trông giống như sau? [[z, 1], [e, 2], [d, 3]]?Sắp xếp mảng hai chiều theo giá trị thứ hai
Trả lời
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}
# => [[:z, 1], [:e, 2], [:d, 3]]
Hoặc là người dùng @Phrogz chỉ ra, nếu các mảng nội có chính xác hai yếu tố mỗi:
arr.sort_by{|x,y|y} # => [[:z, 1], [:e, 2], [:d, 3]]
arr.sort_by(&:last) # => [[:z, 1], [:e, 2], [:d, 3]]
Hoặc đơn giản hơn: 'arr.sort_by {| s, n | n} 'hoặc thậm chí' arr.sort_by (&: last) '(trong Ruby 1.9). – Phrogz
'arr.sort_by (&: last)' cũng hoạt động trong Ruby 1.8.7. –
@Phrogz Ưu tiên 'sắp xếp' vì trong ruby 2.4 (kể từ 2.0 trong thực tế hoặc thậm chí trước đây)' sort_by' không tồn tại nhưng chỉ 'sort_by!' Và [doc] (https://ruby-doc.org/ core-2.4.0/Array.html # method-i-sort_by-21) nói rằng: _Kết quả không được đảm bảo là ổn định. Khi hai khóa bằng nhau, thứ tự của các phần tử tương ứng là không thể đoán trước._ Vì vậy, để sử dụng 'sort_by!', Bạn phải có các khóa uniq. Vì vậy, @ nghệ thuật xin vui lòng chỉnh sửa bài viết của bạn để nói rằng hoặc loại bỏ 'sort_by'. – noraj
Như maerics người dùng trả lời nó cung cấp Tăng dần sorting.This Câu trả lời là rất hữu ích cho tôi nhờ. Để sắp xếp giảm dần tôi sử dụng -
arr = [[:z,1], [:d,3], [:e,2]]
arr.sort {|a,b| a[1] <=> b[1]}.reverse
#=> [[:d, 3], [:e, 2], [:z, 1]]
Bạn có thể lưu cuộc gọi "đảo ngược" bằng cách đơn giản thực hiện 'arr.sort {| a, b || b [1] <=> a [1]} '(lưu ý thứ tự đảo ngược của toán hạng của toán tử so sánh). – maerics
bạn có lỗi đánh máy trong mã của mình, mã chính xác là 'arr.sort {| a, b | b [1] <=> a [1]} '. bạn đã chèn một ký tự ống quá nhiều – Fred
- 1. Thứ tự sắp xếp MySQL theo giá trị mảng
- 2. Sắp xếp mảng đa chiều theo giá trị thập phân
- 3. Sắp xếp một mảng hai chiều dựa trên một cột
- 4. Sắp xếp hai mảng tương ứng
- 5. Python: cách sắp xếp mảng ma trận theo hai trường?
- 6. mảng đa chiều sắp xếp theo chuỗi
- 7. Sắp xếp băm theo chiều dài của giá trị chứa
- 8. Sắp xếp các mảng đa chiều theo giá trị khóa mảng phụ
- 9. Sắp xếp mảng đối tượng theo hai tiêu chí?
- 10. Sắp xếp danh sách theo giá trị
- 11. Sắp xếp mảng theo giá trị theo thứ tự bảng chữ cái php
- 12. Sắp xếp Mảng Mảng theo chiều dài với mã vạch
- 13. PHP: Cách sắp xếp giá trị của một mảng theo thứ tự bảng chữ cái?
- 14. Sắp xếp một vector STL trên hai giá trị
- 15. Sắp xếp theo hai giá trị ưu tiên trên một trong số chúng
- 16. Powershell: Hai mảng chiều
- 17. Nhận thứ hai với giá trị cuối cùng trong mảng
- 18. Sắp xếp đồ theo giá trị
- 19. Sắp xếp băm theo giá trị và khóa (theo thứ tự đó)
- 20. Làm cách nào để sắp xếp mảng hai chiều trong C#?
- 21. Sắp xếp mảng dựa trên hai tham số
- 22. Làm cách nào để chèn các giá trị trong mảng hai chiều theo lập trình?
- 23. JavaScript, sắp xếp với thông số thứ hai nhanh hơn
- 24. Sắp xếp theo cách thủ công một mảng theo thứ tự tăng dần
- 25. Sắp xếp mảng cho hai bộ so sánh?
- 26. Sắp xếp mảng đa chiều trong AS3
- 27. gần nhất cặp tiền trong hai mảng được sắp xếp
- 28. Làm thế nào để sắp xếp trong việc giảm giá trị đầu tiên sau đó tăng giá thứ hai
- 29. Sắp xếp mảng (NSArray) theo thứ tự giảm dần
- 30. Sắp xếp một mảng đa chiều theo chuỗi?
Lưu ý rằng đây thực sự là mảng mảng, không phải mảng 2 chiều. – Phrogz
có thể trùng lặp của [Sắp xếp một tập hợp các đối tượng theo số (cao nhất trước) sau đó bằng chữ cái (chữ cái)] (http://stackoverflow.com/questions/2232470/sort-a-collection-of-objects-by-number- cao nhất-trước-sau-chữ-chữ cái) –