【发布时间】:2014-09-03 19:26:48
【问题描述】:
这个问题真的很接近Shopify Sort cart.items array using Liquid script
我有未排序的会话,我想按日期和时间排序(预期结果:1、2、3、4)。
{
"date"=>"2014-06-24",
"time"=>"09:00",
"name"=>"Session 2",
}
{
"date"=>"2014-06-25",
"time"=>"08:45",
"name"=>"Session 3",
}
{
"date"=>"2014-06-24",
"time"=>"08:00",
"name"=>"Session 1",
}
{
"date"=>"2014-06-25",
"time"=>"09:45",
"name"=>"Session 4",
}
代码如下:
{% assign time_sorted_instances = instances | sort: "time" %}
{% assign day_sorted_instances = time_sorted_instances | sort: "date" %}
{% for instance in instances %}
{{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }} <br>
{% endfor %}
{% for instance in time_sorted_instances %}
{{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }} <br>
{% endfor %}
{% for instance in day_sorted_instances %}
{{ instance.date | date: "%A, %B %e, %Y" }} {{ instance.time }} {{ instance.session.name }} <br>
{% endfor %}
我可以得到按日期 (2,1,3,4) 或按时间 (1,3,2,4) 排序的实例,但不能一个接一个地排序 (1,2,3, 4)。 ruby 中的匹配函数是:
sorted_instances = instances.sort{|i| [i.date,i.time]}
这是 Liquid 中排序选项的代码:https://github.com/Shopify/liquid/blob/master/lib/liquid/standardfilters.rb#L112-L123
显然这是不可能的。如果有人有解决办法,请告诉我!
【问题讨论】: