将元素推送到Jade中的数组

时间:2013-06-25 22:14:56

标签: html5 node.js express pug

我正在尝试在Jade中创建一个数组,然后循环遍历另一个并从中创建一个新数组。我正在做类似的事情:

         .metadata4
          - var prepopulate = []
          - if (entry.artist_ids)
            - for (var artist in entry.artist_ids)
              - var name = entry.artist_ids[artist]
              - prepopulate.push({id: name, name: name})
        input(type='text', class='token-input', data-url="/query", data-pre=prepopulate)

这一切都很棒。但是,它似乎在列表的末尾添加了一个额外的元素(比如它将函数push推送到数组或其他东西)。任何人都知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

我不确定为什么会这样,也没有测试。作为一种解决方法,您可以做的是,声明一个新的var i = 0; 然后在for内增加它。并将prepopulate.push({id: name, name: name})放在if语句中,例如if(i < entry.artist_ids.length - 1){...push...}

答案 1 :(得分:1)

我无法使用以下数据重现此行为

entry = { "artist_ids": {1: "hello", 2:"robert"} } 

我得到以下数据:

[{"id":"hello","name":"hello"},{"id":"robert","name":"robert"}]

这正是你写的(尽管我怀疑你想用艺术家替换id的名字值)

也许你可以张贴你的参赛对象?