将包含变量名的类数组字符串解析为数组

时间:2018-09-23 07:47:34

标签: javascript json parsing math matrix

我有一个默认设置,其中定义了

之类的变量。
let a="a", b="b", c="c", d="d", ...

我得到了一个多维数组 (as string),该数组正在使用这些变量作为值,如...

let matrixString = // (typeof matrixString === "string")
 `[
    [a, b, c, d, a],
    [b, b, c, d, a],
    [c, c, a, a, d]
  ]` 

...,我想使用"JSON.parse()" 解析该字符串,以从字符串中获得真实数组但由于使用错误消息

,解析包含变量的字符串似乎存在问题
JSON Parse error: Unexpected identifier "a"

请查看我的示例:

/* ** default setup ** */
let a="a", b="b", c="c", d="d";
let matrix =  [
  [a, b, c, d, a],
  [b, b, c, d, a],
  [c, c, a, a, d]
]

console.log(matrix)



/* ** here is the issue ** */
let matrixAsString = `[
                        [a, b, c, d, a],
                        [b, b, c, d, a],
                        [c, c, a, a, d]
                      ]`;
try {
  let parsedMatrix = JSON.parse(matrixAsString)
  console.log(parsedMatrix)
} catch(error) {
  // error = 'JSON Parse error: Unexpected identifier "a"'
  console.log(`Error: ${error}`) 
}

如何解决此问题而无需使用诸如映射字符串和在""之间使用"eval()"映射字符串和添加UIM.Search的解决方法。 有没有方法?

1 个答案:

答案 0 :(得分:1)

如果您首先没有JSON.parse()进行解析,则不能使用JSON。如果您需要更宽松的JSON定义来工作,可以考虑使用https://www.npmjs.com/package/really-relaxed-json之类的东西。

不过,在这种情况下,您要查找的可能是模板文字

/* ** default setup ** */
let a="1", b="2", c="3", d="4";
let matrix =  [
  [a, b, c, d, a],
  [b, b, c, d, a],
  [c, c, a, a, d]
]

console.log(matrix)

let matrixAsTemplateLiteral = `[
                        [${a}, ${b}, ${c}, ${d}, ${a}],
                        [${b}, ${b}, ${c}, ${d}, ${a}],
                        [${c}, ${c}, ${a}, ${a}, ${d}]
                      ]`;
console.log(matrixAsTemplateLiteral);