如何在数组变量上使用String.raw

时间:2019-01-04 12:06:21

标签: javascript jquery mathjax

我的代码有问题,我已经定义了数组,但其中包含特殊字符,例如/, {}, (), [],等(由于纯数据源MathJax)

数组返回的字符串不包含那些提到的特殊字符

PS:我已经读过String.raw,但是我不知道如何在这种数组中使用它。请帮我:(

var Array_QA = {
    "\Large {\lim_{x \to 2}} (5^x + 2^x + 4)" : "33",
    "\Large {\lim_{x \to 2}} \frac {x^2 - 6x + 8}{x^3 - 4}" : "0"
};

2 个答案:

答案 0 :(得分:0)

由于反斜杠是javascript字符串中的转义字符,因此如果您希望它出现在字符串文字中,则需要将其加倍。试试

var Array_QA = {
    "\\Large {\\lim_{x \\to 2}} (5^x + 2^x + 4)" : "33",
    "\\Large {\\lim_{x \\to 2}} \\frac {x^2 - 6x + 8}{x^3 - 4}" : "0"
};

答案 1 :(得分:0)

String.raw用于模板文字,带有插值变量,嵌入式引号和换行符的字符串的ES(6)新语法,以及“标记”的可选应用程序(仅是接收片段的函数回调)每个插值变量对模板进行拆分,以返回最终的组合字符串(如果您愿意)。

因此,如果我有一个处理模板文字的函数,并且名为processLiteral,那么我可以做类似的事情将其应用于文字:

processLiteral`This is a string with interpolated variables like ${someVar} and also ${otherVar}.`

具体来说,String.raw旨在用作模板文字的标记,它将返回原始字符串,而不处理任何转义字符。意味着\n将保留为\n而不是换行符,\t将保留为\t且不成为制表符,依此类推。它通过在任何转义斜杠,从而转义斜杠,因此等效于使用\\n\\t等。

因此,在您的情况下,如果要使用该方法,由于不能将模板文字直接放置在对象键声明中(无法正确解析),请执行以下操作:

var Array_QA = {};
Array_QA[String.raw`\Large {\lim_{x \to 2}} (5^x + 2^x + 4)`] = "33";
Array_QA[String.raw`\Large {\lim_{x \to 2}} \frac {x^2 - 6x + 8}{x^3 - 4}`] = "0";

也就是说,从一开始就将像这样的复杂字符串作为对象键可能不是一个好主意……但是应该可以。如果可以的话,我建议您重构代码,以不同的方式进行操作。