【发布时间】:2020-02-21 22:22:54
【问题描述】:
我认为回复肯定很简单,但我已锁定它:/ 我想将一个数组从我的 server.js 发送到我的 view.ejs,我需要它的数组格式。这是我的代码:
在 server.js 中
.get('/map', async function(req, res) {
let areaCoordinates= await getCoordinates();
res.render('map.ejs', {token: tokenMapbox, areaCoordinates: areaCoordinates});
})
数组的数组是 areaCoordinates(假设它是 [[[1,2],[3,4]],[[5,6],[7,8]]] 但更长且长度可以改变,array中数组的长度也可以改变,只是array中的数组总是2(x和y坐标))
在 view.ejs 中
<script>
/* some stuff */
let areaCoord_1="<%= areaCoordinates[1] %>";
let areaCoord_2= "<%= areaCoordinates[2] %>";
/* some stuff */
</script>
当我需要 [[1,2],[3,4]] 和 [ [5,6],[7,8]]
我也尝试在 view.ejs 中
let areaCoord_1=[]
"<%= for (coord of areaCoordinates[1]) { %>"
areaCoord_1.push(coord);
"<%= } %>"
但是我有一个语法错误。
有人有解决办法吗?
(我考虑转换数组中的字符串,每 2 个元素制作另一个数组以重新制作数组数组,但可能有更干净的解决方案和更少的资源消耗)
重要的是我真的需要一个数组而不是输出中的字符串
【问题讨论】:
-
如果它是一个数组编码它。这将工作
let areaCoord_1=<%= JSON.stringify(areaCoordinates[1]) %>; -
谢谢@LawrenceCherone 的快速回复,不幸的是它给了我一个字符串“[[1,2],[3,4]]”,我需要一个数组[[1,2], [3,4]] 例如 areaCoord_1[1]=[3,4] (使用 JSON.stringify 它给我 areaCoord_1[1]='[' )
-
不要用引号括起来
-
会的,VS code 并不完美,ejs linting lib 更差。这触及了访问数组的基本 javascript,其余的只是 JSON.stringify 以 Javascript 对象表示法的形式作为字符串放置在页面上,或者您应该使用端点通过 ajax 获取数据