9

我正在尝试使用 jinja 文档来解决这个问题,但我所有的尝试都失败了。

http://jinja.pocoo.org/docs/dev/templates/#sort

这是一些测试 JSON 数据:

items: [{
        name: 'item 1',
        time: '2015-02-12T00:38:18.055Z'
    },{
        name: 'item 2',
        time: '2014-01-12T00:40:18.881Z'
    }]

我应该如何形成排序代码以便我可以按时间排序?

我试过:

{% for item in items|sort%}

{% for item in items|sort(attribute='time')%}

{% for item in items|sort('time')%}

{% for item in items|sort(time)%}

{% for item in items|sort(item.time)%}

但没有任何效果。谢谢!

4

3 回答 3

8

Nunjucks 似乎只支持位置参数:

{% for item in items|sort(false, true, 'time') %}
{{item.name}}<br>
{% endfor %}

var res = nunjucks.renderString("{% for item in items|sort(false, true, 'time') %}{{item.name}}<br>{% endfor %}", { items: [{
        name: 'item 1',
        time: '2015-02-12T00:38:18.055Z'
    },{
        name: 'item 2',
        time: '2014-01-12T00:40:18.881Z'
    }] });

document.body.innerHTML = res;
<script src="https://mozilla.github.io/nunjucks/files/nunjucks.js"></script>

于 2015-05-28T04:35:06.190 回答
1

现在 nunjucks 已经支持参数,所以 {% for item in items|sort(attribute='time')%} 工作正常

于 2016-12-30T16:02:24.917 回答
0

将时间解析为 Epoch 时间并将其作为另一个属性传递,以便您对其进行排序。

items: [{
    name: 'item 1',
    time: '2015-02-12T00:38:18.055Z',
    epoch: 1232323532
}]

或使用自动执行此操作的自定义过滤器

于 2015-05-28T04:14:21.793 回答