如何与Nunjucks按日期排序?

sjm*_*tin 5 javascript jinja2 nunjucks

我正在尝试使用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'
    }]
Run Code Online (Sandbox Code Playgroud)

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

我试过了:

{% 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)%}

但是什么都行不通。谢谢!

Ja͢*_*͢ck 7

Nunjucks 似乎只支持位置参数:

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

{% for item in items|sort(false, true, 'time') %}
{{item.name}}<br>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)


Fél*_*anz 0

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

items: [{
    name: 'item 1',
    time: '2015-02-12T00:38:18.055Z',
    epoch: 1232323532
}]
Run Code Online (Sandbox Code Playgroud)

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

  • 不需要数字属性值,字符串就可以很好地比较。 (2认同)