【问题标题】:How to use String.raw on array variables如何在数组变量上使用 String.raw
【发布时间】:2019-05-31 00:13:40
【问题描述】:

我的代码有问题,我已经定义了数组,但它包含特殊字符,如 /, {}, (), [], 等...(由于plainsource 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"
};

【问题讨论】:

    标签: javascript jquery mathjax


    【解决方案1】:

    因为反斜杠是 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"
    };
    

    【讨论】:

      【解决方案2】:

      String.raw 与模板文字、带有内插变量、嵌入引号和换行符的字符串的新(ish)ES6 语法以及“标签”的可选应用(它们只是接收模板由每个插值变量拆分,以返回您喜欢的最终组合字符串)。

      因此,如果我有一个处理模板文字的函数,它被称为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";
      

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

      【讨论】:

      • 您可以在计算的属性键中使用它们。
      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 2013-05-16
      • 1970-01-01
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2022-01-07
      相关资源
      最近更新 更多