I have a two dimensional array which has following structure
array = [
["2019-03-11","00986587","LBP"],
["2019-02-23","00462421","USD"],
["2019-05-26","00357853","EUR"],
["2019-09-15","00357382","LBP"]
]
I want to sort the array based on the date (first element of each row).
Looking for the following result:
array = [
["2019-09-15","00357382","LBP"],
["2019-05-26","00357853","EUR"],
["2019-03-11","00986587","LBP"],
["2019-02-23","00462421","USD"]
]
After my research on sort and sort_by i didn't find any solution. Can anyone please help me to solve my problem ? and thank you
You can sort 2d arrays with sort_by method: sort_by sorts in ascending order by default. If you want it to be in descending order, just reverse the result.
array.sort_by{ |a| a.first }.reverse
Two important notes:
YYYY-MM-DD format, so sorting them alphabetically will also sort them chronologically.It means that all you need is:
array.sort.reverse
#=> => [["2019-09-15", "00357382", "LBP"], ["2019-05-26", "00357853", "EUR"], ["2019-03-11", "00986587", "LBP"], ["2019-02-23", "00462421", "USD"]]
If you want to save modify array in place, you can write:
array.sort!.reverse!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With