javascript 如何在pug中迭代Map

rbl8hiat  于 2023-01-19  发布在  Java
关注(0)|答案(2)|浏览(115)

我在服务器上有一个Map要传递给pug,但是我无法迭代Map中的键值对来渲染Map中的数据,我尝试过简化Map,但是仍然无法使其工作。

router.get('url', middlware(),(req,res)=>{
  let renderData = {};
  renderData.test = new Map([["1","one"],["2","two"]]);
  res.render('template', renderData);
})

模板:

block content
  .container
    .mt-3.whiteBG
      each item in test
        p here is some text

在简化版本中,我甚至不能得到要渲染的纯文本,更不用说访问迭代中的map值了,如果我做一些类似p #{test.get("1")}的事情,我就可以访问这些值,map在Pug中是不可迭代的吗?如果不是,有没有办法把我的map转换成Pug可以迭代的数组/对象?

scyqe7ek

scyqe7ek1#

在下一个版本中,Pug将支持ES6集合的迭代,在此之前,您可以使用Object.fromEntries()将Map转换为对象:

renderData.test = Object.fromEntries(renderData.test);
rpppsulh

rpppsulh2#

从Pug v2.1开始,您可以像这样迭代Map:

- const map = new Map([["1","one"],["2","two"]]);
 each [key, value] of map
   p= key + ': ' + value

产出

1: one
2: two

Source
支持each ... of ...循环

each value of iterable
  li= value

这需要一个在JS中支持for(const瓦尔of iterable)语法的环境。你可以迭代Map,Set等,也可以迭代数组。还有一些map键的重构:

- const map = new Map([['a', 'x'], ['b', 'y']]);
each [key, value] of map
  li
    strong= key
    = value

相关问题