我正在尝试在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推送到数组或其他东西)。任何人都知道为什么会这样吗?
答案 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的名字值)
也许你可以张贴你的参赛对象?