有没有办法使用 Nunjucks 过滤器提取属性?

问题描述

有没有办法通过使用 Nunjucks 过滤器从每个元素中提取特定属性来映射数组?

我想做类似以下的事情,但我不知道如何使用内置的 Nunjucks 操作来做到这一点。

输入

{% set foods = [{name: "apple",colour: "green"},{name: "plum",colour: "purple"},{name: "cherry",colour: "red"}] %}

{{ foods | extractattr("colour") }}

输出

green,purple,red

解决方法

const nunjucks  = require('nunjucks');
const env = nunjucks.configure();

env.addFilter('map',function (arr,prop,...etc) {
    var f = typeof prop == 'function' ? prop : typeof this.env.filters[prop] == 'function' ? this.env.filters[prop] : (e) => e[prop]; 
    return arr instanceof Array && arr.map(e => f(e,...etc)) || arr;
});

const foods = [
    {name: "apple",colour: "green"},{name: "plum",colour: "purple"},{name: "cherry",colour: "red"}
];

const html = env.renderString(`{{ foods | map('name') }}`,{foods});
console.log(html);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...