我的代码有问题,我已经定义了数组,但其中包含特殊字符,例如/, {}, (), [],
等(由于纯数据源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"
};
答案 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";
也就是说,从一开始就将像这样的复杂字符串作为对象键可能不是一个好主意……但是应该可以。如果可以的话,我建议您重构代码,以不同的方式进行操作。