javascript - 使用 forloop 创建动态 javascript 对象
问题描述
已编辑的问题
大家好,我想用forloop生成一个动态的javascript对象,但是我是js新手。
我有一个var citymap
包含id, latitude, longitude
我需要从我的数据库中生成值的内容,flask
我想出了如何将它转储到 JSON 并读入HTML <script>
,我现在唯一的问题是如何将它生成到一个 javascript 对象中。
我可以先在 Python 中执行此操作,然后将其转储到 HTML 模板并使用模板引擎读取它吗?{{ var }}
或者这可以在内部完成
我现在的python烧瓶代码
@app.route("/engineer", methods=['GET', 'POST'])
def engineer():
with DatabaseUtils() as db:
position = db.getFaultyCar()
token = len(position)
data = json.dumps(position)
print(data)
return render_template("engineer.html", token=token, position=position,data = data)
我的 jinja2 HTML 模板
<body>
<!-- For testing output -->
<p id="demo"></p>
<div>
<!-- Using template to print, but does not work inside js object -->
{%for car in position%}
{{ car[0] | tojson }}: {
center: {lat: {{ car[9] | tojson }}, lng: {{ car[10] | tojson }}}
},
{% endfor %}
</div>
<div id="map"></div>
<script type="text/javascript">
data = JSON.parse({{ data | tojson }});
var leng = {{ token }};
var id = [];
var la= [];
var lo = [];
for(i = 0; i < leng; i++){
id.push(data[i][0]); #id sits at index 0
la.push(data[i][9]); # latitude sits at index 9
lo.push(data[i][10]); # longitude sits at index 10
}
var x = "";
for(i = 0; i < leng; i++){
x += "{" + id[i] + ": { center: {lat: " + la[i] + ", lng:" + lo[i] + "}},";
}
document.getElementById("demo").innerHTML = x;
// Correct format from google doc
var citymap = {
14: {
center: {lat: -37.911012, lng: 144.742922}
},
2: {
center: {lat: -37.823, lng: 144.997}
},
3: {
center: {lat: -37.850, lng: 144.999}
}
};
网站现在的样子
我计划/想要的是这样的
var y = {};
for(i = 0; i < leng; i++){
# Append x value to object y
y.assign("{" + id[i] + ": { center: {lat: " + la[i] + ", lng:" + lo[i] + "}},");
}
// create citymap with values in y
var citymap = {
y
};
var citymap = y;
解决方案
最后,我太傻了......
我所做的是使用模板引擎中的forloop来替换JS循环,从我的数据库数据中添加代表纬度和经度的索引9和10。
{%for car in position%}
// Add the circle for this city to the map.
var cityCircle = new google.maps.Circle({
strokeColor: '#FF0000',
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: '#FF0000',
fillOpacity: 0.35,
map: map,
center: {lat: {{ car[9] }}, lng: {{ car[10] }}},
radius: 100
});
{% endfor %}
推荐阅读
- laravel - 如何将查询php转换为laravel框架
- kubernetes - 如何从另一个用户管理 kubectl
- javascript - 使用 php 代理获取时 axios.interceptors 不会触发
- algorithm - 迭代 BTreeSet 和 HashSet 的时间复杂度是多少?
- python - 如何为每个客户生成自定义 exe
- java - Gradle Spring Boot 依赖项:包含用于 bootRun / 排除用于 bootJar
- python - Python Panda query() 过滤字符串具有特定长度的行
- python - 有没有办法实现 fmu 导出到基于 c++ 的模拟软件以使用 fmi?
- python - 合并基于行的相似字段 - Python
- python - pytorch中梯度是如何计算的