Tôi có một mảng của mảng như sau:Sorting một mảng của mảng trong Ruby
irb(main):028:0> device_array
=> [["name1", "type1", ["A", "N", "N"], ["Attribute", "device_attribute"], 9], ["name2","type2", ["A", "N", "N"], ["Attribute", "device_attribute"], 7]]
Tôi muốn sắp xếp toàn bộ device_array trên các yếu tố thứ 4.
Tôi đã thử
AllDevicesController.all_devices.sort do | a,b |
for i in 0..(AllDevicesController.all_devices.length - 1) do
a[i][4] <=> b[i][4]
end
end
Tôi cũng đã thử:
AllDevicesController.all_devices.sort do | a,b |
a[][4] <=> b[][4]
end
Cả hai phương pháp chưa từng làm việc.
Tôi đã sử dụng điều này như một tài liệu tham khảo: http://ariejan.net/2007/01/28/ruby-sort-an-array-of-objects-by-an-attribute/
Tôi tưởng tượng tôi là thiếu một cái gì đó rubyish mà làm cho điều này thực sự dễ dàng.
Tôi, tất nhiên, bỏ phần tử thứ 4 của phần tử thứ 0 của device_array. Không nên có bất kỳ đối tượng nil. –
Trong trường hợp đó, vấn đề duy nhất của bạn là sử dụng 'a [] [4]' thay vì 'a [4]'. 'a [] [4]' không phải là cú pháp Ruby hợp lệ. –