我有这个数据,
[
%{
company_id: "ocsc.ie",
created_at: "Wednesday, 08 Mar 2017 6:14 AM",
name: "O'Connor Sutton Cronin",
session_count: 2,
user_count: 8
},
%{
company_id: "virtuspm.ie",
created_at: "Tuesday, 10 Jul 2018 8:48 AM",
name: "VIRTUS",
session_count: 1,
user_count: 7
},
%{
company_id: "garlandconsultancy.com",
created_at: "Wednesday, 20 Jun 2018 3:32 PM",
name: "Garland",
session_count: 1,
user_count: 3
},
%{
company_id: "protectorsecurity.co.uk",
created_at: "Friday, 31 Aug 2018 11:03 AM",
name: "Protector Security Group",
session_count: 4,
user_count: 9
},
%{
company_id: "tcd.ie",
created_at: "Wednesday, 01 Mar 2017 7:39 AM",
name: "TCD",
session_count: 4,
user_count: 18
}
]
Run Code Online (Sandbox Code Playgroud)
我正在尝试根据不同的值对其进行排序。
Enum.sort_by(data, &(&1.user_count), &Kernel.>=/2)
Run Code Online (Sandbox Code Playgroud)
整数和字符串,上面的表达式是有效的。
我试过整数值,我关心的是我们如何按日期排序?另外,我们可以搜索值吗?用like表情?仅用于nameand company_id,您将搜索查询作为gar.
[%{
company_id: "garlandconsultancy.com",
created_at: "Wednesday, 20 Jun 2018 3:32 PM",
name: "Garland",
session_count: 1,
user_count: 3
}]
Run Code Online (Sandbox Code Playgroud)
. 所以所有那些类似于搜索查询的地图都被过滤了。
我试过这个
Enum.filter(data, fn(x) -> String.match?(String.downcase(x.name), ~r/String.downcase("VIR")/) end)
Run Code Online (Sandbox Code Playgroud)
它也不起作用。任何帮助都会非常感激。
最简单的方法是首先使用 Timex 之类的库解析所有日期时间字符串。
您可以使用指令解析日期以适合您的特定格式。
def parse_timestamp(ts) do
Timex.parse!(ts, "{WDfull}, {0D} {Mshort} {YYYY} {h12}:{m} {AM}")
end
Run Code Online (Sandbox Code Playgroud)
例如:
iex(1)> parse_timestamp("Tuesday, 10 Jul 2018 8:48 AM")
~N[2018-07-10 08:48:00]
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过调用使用这些值对数据进行排序:
data
|> Enum.sort_by(fn d -> d.created_at |> parse_timestamp() end, &Timex.before?/2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
840 次 |
| 最近记录: |