如此处所述:http://jade-lang.com/reference/,获取索引或密钥非常容易。但有没有办法让两者兼得?
这个:
ul
each val, index in {"day": "Wed", "link": "url", "message": "three"}
li#item-= index + ': ' + val
输出:
<ul>
<li id="item-">day: Wed</li>
<li id="item-">link: url</li>
<li id="item-">message: three</li>
</ul>
但我想要这个:
<ul>
<li id="item-0">day: Wed</li>
<li id="item-1">link: url</li>
<li id="item-2">message: three</li>
</ul>
答案 0 :(得分:35)
我认为如果你在迭代一个数组,你只会得到一个索引,所以jade文档与它的例子有点混淆。我将为您提供三个选项来完成此任务。选择你自己的冒险!
ul
-var index = 0
each val, key in {day: "Wed", link: "url", message: "three"}
li(id="item-#{index++}") #{key}: #{val}
ul
each val, index in [["day", "Wed"], ["link", "url"], ["message", "three"]]
li(id="item-#{index}") #{val[0]}: #{val[1]}
ul
each val, index in [{day: "Wed"}, {link: "url"}, {message: "three"}]
li(id="item-#{index}") #{Object.keys(val)[0]}: #{val[Object.keys(val)[0]]}
第一个选项可能就是你想要的,但其他选项可能很有趣。
答案 1 :(得分:1)
只是为了补充这个已经回答的问题,我无法通过PyJade可靠地使用这些问题。我找不到引用我这个提示的页面,但它对我来说很有效。
将此添加到您的__init__.py
文件,以将enumerate
功能添加到您的pyjade环境。
app.jinja_env.globals.update(enumerate=enumerate)
然后,您可以在模板中使用它,就像任何其他pythonic枚举循环一样:
for idx, val in enumerate(list_of_whatevs)
{{ idx }}, {{ val }}
干杯
答案 2 :(得分:0)
使用 Object.entries()
(和 Pug 2.0.4)的另一个选项:
ul
each entry, index in Object.entries({day: 'Wed', link: 'url', message: 'three'})
- const [key, val] = entry
li(id=`item-${index}`) #{key}: #{val}