- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个像这样的嵌套对象
contract: {
packages: [
{
servicePoint: {
productType: {
name: 'Name1'
}
},
packages: [
{
servicePoint: {
productType: {
name: 'Name1'
}
}
},
{
servicePoint: {
productType: {
name: 'Name2'
}
}
}
]
}
]
}
我想遍历嵌套对象并查找所有 productType.name 值(如果存在)。并创建元素
<button type="button">{{ servicePoint.productType.name }}</button>
我可以做这样的事情
{% for servicePoint in contract.packages[0].packages[0].servicePoints %}
但它只会在第二层对象下找到属性。
我找到了一些解决方案
{% if contract.packages.length > 0 %}
{% for item in contract.packages %}
{% if item.servicePoints.length > 0 %}
{% set names = (names.push(item.servicePoints[0].productType.name), names) %}
{% endif %}
{% if item.packages.length > 0 %}
{% for value in item.packages %}
{% set names = (names.push(value.servicePoints[0].productType.name), names) %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
但是我遇到了新问题。如果找到相同的 productType.name,它会创建两个具有相同值的按钮。
我怎么能 uniq productType.name ?
最佳答案
你可以在推送前检查名称是否已经存在于names
中。
附言我不确定传递给模板的“不平衡”结构是个好主意。因为 set arr = (arr.push(item), arr)
是一个技巧。
{% if contract.packages.length > 0 %} // You can don't check length. It's not a necessary.
{% for item in contract.packages %}
{% if item.servicePoints.length > 0 %}
{% set names = (names.push(item.servicePoints[0].productType.name), names) %}
{% endif %}
{% if item.packages.length > 0 %}
{% for value in item.packages %}
{% if names.indexOf(value.servicePoints[0].productType.name) == -1 %} // <=
{% set names = (names.push(value.servicePoints[0].productType.name), names) %}
{% endif %} // <=
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
关于javascript - 遍历嵌套对象属性 nunjucks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39464376/
我有以下模型: items: { someId1: { property1.... }, someId2: {...},
如果我们有值 'cats',我想要子字符串 'at'(需要删除第一个和最后一个字母)。我们如何在 Nunjucks 模板中实现这一点? 最佳答案 您可以使用 JavaScript slice 执行此操
我是 nunjucks 新手 - 和 eleventy 一起试用。 精简版:我可以在 nunjucks 的标签内使用变量和过滤器吗?例如: {% 设置 myVar = {{ 标题 |降低 }} %}
看起来应该很简单,但我很难找到答案。 如何在 Nunjucks 模板中找到当前页面的 URL? 这样的事情将是完美的: Some link 最佳答案 取决于您的请求对象的属性,如果它是来自 djang
背景: Eleventy 和 Nunjucks(和 Markdown) 大量长格式文本(使用 markdown 更容易创建/编辑)。 复杂的布局。 对 SSG 还是新手 目标: 使用 markdown
我想在我的“建筑”模板文字中有一个“玻璃”模板文字。 {% for x in range(0, 5) %} {% endfor %} {% for x in range(
如何检查变量是否是 if block 中的对象或字符串?似乎无法调用 {% if ... %} block 内的函数。而其他 {{ if() }} 语法似乎只适用于内联条件。 我现在解决它以测试当变量
我在玩 hexo,我正在测试适用于小循环的 nunjuck 语法。但是我找不到如何include a file ,我的文件位置可能有误(目前在 /source/_posts 中的 .md 旁边)。 环
我想创建一些嵌套的宏。一个部分,在那里我想动态调用任何组件的宏。 (在这种情况下,我要调用的组件是 article。) 这是我的部分宏: {% macro section(config) %
当使用需要重新渲染或编译的Nunjucks模板时,是否有标准的命名约定可用于处理它们?即file.nunjucks,file.nunjucks.html或file.njs等。 我知道在使用其他模板语言
当前变量在 for 循环中被称为属性: {% id, item in items %} {{ id }} {{ item.foo }} {{ item.bar }}
因为 nunjucks 现在支持使用 set as a block我想做这样的事情: {% set navigationItems %} {% for item in items %} {
我有一个像这样的嵌套对象 contract: { packages: [ { servicePoint: {
如何在 Nunjucks 中使用多个数据文件? — 字符串数组对我不起作用; gulp.task('nunjucks', function() { return gulp.src('src/pages
在 javascript 中,我可以循环数组来输出我的对象,如下所示。 var myArr = ["one","two","three"] var myObj = { "one": { "
我的文件夹结构如下: /app |-routes.js /public |-index.html server.js Server.js 看起来像这样: var nunjucks = re
我已经使用 nunjucks 几个月了,发现它是一个很棒的模板引擎。然而,今天早上我遇到了一个看似简单的问题,但我就是想不通。我希望另一双眼睛可以帮助指出解决方案。 问题:如果我将函数传递给模板,传递
所以我在我的 Node.js 应用程序中使用 Nunjucks 作为模板引擎。 我有一个对象,我们将调用 var这可能是也可能不是空的。 当它是空的,如果我这样做{{ var | dump }} Nu
我有一个像这样的 JSON 对象 { "data": [ { "src": "src1", "name": "name 1"
我在从 Nunjucks {% for %} 获取数组中项目的索引时遇到了一些麻烦环形。 我定位的数组很简单,看起来像这样 pages[1,2,3] 这是 Nunjucks 循环 {% for i,p
我是一名优秀的程序员,十分优秀!