我在一个HTML文件工作。我有一个字典列表,我通过Flask从我的Python文档。我试图在JavaScript中循环列表的每个元素并获得一个值。我尝试了这些解决方案,但他们没有工作:
```for (let i = 0; i < 6; i++)
{
var value = '{{data[i]["key"]}}'
//do some stuff with it.
}```
错误:
File "/home/ubuntu/final_project/templates/results2.html",第144行,在顶级模板代码var stuff = {{data[i]['key']}"/usr/地方/lib/python3.9/网站/jinja2/environment.py"线在getitem中返回obj[参数]jinja1 .exceptions. undefinederror:列表对象没有元素Undefined
并且不带双括号:
```for (let i = 0; i < 6; i++)
{
var value = {{data[i]["key"]}}
//do some stuff with it.
}```
同样的错误。最后
:
```for (let i = 0; i < 6; i++)
{
var temp = '{{data}}'
var value = temp[i]["key"]
//do some stuff with it.
}```
但这也不起作用。它开始逐个字符地遍历数据。(输出为"undefined"6次
然而,这似乎不起作用。是否有一种方法可以在JavaScript中获得"数据"列表的"第i"列表,或者我必须回到我的python文件并逐个通过flask发送每个字典?
随着您的代码示例,似乎您正在尝试读取列表的内容,操作每个项目并存储新值。在ECMA6中,我们有用于这类操作的map方法。map方法接受一个函数,该函数将对列表的每个元素执行,然后返回一个新列表。你不需要像以前那样声明i或遍历列表。当然,这种方法也有解决方案,但这是现代的方法。
const data = [l1,l2,l3]
const newData = data.map( () => { return do_stome_stuff() }); //do some stuff
如果你需要基于一个键做一些事情,你必须在函数中为此设置逻辑。