脚本标签中的ejs变量/设置数组变量变为字符串

Ejs variables in script tag/ setting array to variable become string

所以我需要将变量传递给 ejs 文件中的脚本标记。它是问题数组(我无缘无故地在 var 名称中称它为对象),我需要在脚本标记中使用它。我看到它是由 '<%-varname%>' 完成的。 但问题是,我想在使用它的同时从数组中删除一些东西,所以我需要这个数组的副本。问题是:

console.log('<%-passedUser.questionsObject%>')
console.log('<%-passedUser.questionsObject[0]%>')
arrayToUse = '<%-passedUser.questionsObject%>'
console.log(arrayToUse)
console.log(arrayToUse[0])

输出:

question1,answer1,answer2,answer3,answer4,answer5,q2,answer1,answer2 

question1,answer1,answer2,answer3,answer4,answer5 

question1,answer1,answer2,answer3,answer4,answer5,q2,answer1,answer2 

q

我试过JSON.stringify,解析,没有任何效果。如果有任何帮助,我将不胜感激。

注意:我不知道为什么 '<%-passedUser.questionsObject%>' 没有以正确的方式记录,但它给出了正确的值。它的真实形式是:

[[question1,answer1,answer2,answer3,answer4,answer5],[q2,answer1,answer2]]

你必须同时使用 json parse 和 json stringify

arrayToUse = JSON.parse('<%- JSON.stringify(passedUser.questionsObject)%>')

稍后您可以使用

轻松拆分数组
const [questions,answers] = arrayToUse

或者在发送给客户之前做

<% const [questions,answers] = passedUser.questionsObject %>

<script>
  const  arrayToUse = JSON.parse('<%- JSON.stringify(questions)%>')
</script>