【问题标题】:Array of arrays from 'server'.js returned as string in 'view'.ejs来自 'server'.js 的数组数组在 'view'.ejs 中以字符串形式返回
【发布时间】: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=&lt;%= JSON.stringify(areaCoordinates[1]) %&gt;;
  • 谢谢@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 获取数据

标签: arrays node.js ejs


【解决方案1】:

参照。问题下的 Lawrence Cherone 的 cmets :
使用:

let areaCoord_1=<%= JSON.stringify(areaCoordinates[1]) %>; 

不带引号
类似问题也可以查看Passing an object to client in node/express + ejs

【讨论】:

    猜你喜欢
    • 2016-10-19
    • 2014-04-18
    • 2021-06-04
    • 2019-07-17
    • 1970-01-01
    • 2019-05-19
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多