我有一个默认设置,其中定义了
之类的变量。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
的解决方法。 有没有方法?
答案 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);