Ho un array di array in questo modo:Ordinamento di un array di array in 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]]
desidero ordinare l'intero device_array al 4 ° elemento.
Ho provato
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
Ho anche provato:
AllDevicesController.all_devices.sort do | a,b |
a[][4] <=> b[][4]
end
Entrambi i metodi non hanno funzionato.
Io sto usando questo come un punto di riferimento: http://ariejan.net/2007/01/28/ruby-sort-an-array-of-objects-by-an-attribute/
immagino che mi manca qualcosa rubyish che rende il tutto veramente facile.
Io, ovviamente, ho omesso il quarto elemento dello 0 ° elemento del array_apparecchio. Non dovrebbero esserci oggetti nulli. –
In questo caso il tuo unico problema è usare 'a [] [4]' invece di 'a [4]'. 'a [] [4]' non è valido Sintassi di Ruby. –