Hello everyone, today I have a problem with Map Module.
I want to new a map like this
%{
"2018-04-13" => 101,
"2018-04-12" => 34
...
"2018-03-13" => 345
}
key is date and value is random number, and order is by date.But when I merge %{“2018-03-12” => 134}, the order is upset. It becomes
%{
"2018-03-17" => xxx,
"2018-04-01" =>xxx,
...
}
And I found that if last date compared first date more than a month, the order will be upset.So please tell me why?Thank you very much!
idi527
2
Keys in maps should be considered not ordered.
If you want an ordered collection, try using a list of {key, value}
tuples.
data = [
{"2018-04-13", 101},
{"2018-04-12", 34}
]
Also, for faster sorting, you might want to represent dates as unix timestamps …
6 Likes
Thanks a lot! I found this
「Maps’ keys do not follow any ordering.」
in elixir get started maps page.
1 Like
joe
4
Anyone stumbling upon this:
Enum.sort
can help. Then you have a Keylist. They are ordered.
1 Like