问题描述
如何将这个字符串的javascript对象值转换为数组,去掉外面的引号,只留下括号?尝试使用 obj["text-font"] = obj["text-font"].split('"').join("");
未成功。
当前
text-font: "['Open Sans Regular','Arial Unicode MS Regular']"
预期
text-font: ['Open Sans Regular','Arial Unicode MS Regular']
解决方法
如果您知道字符串中除了定义字体名称的引号之外没有其他引号,您可以将它们转换为双引号,然后使用 JSON.parse()
将其转换为数组。
obj['text-font'] = JSON.parse(obj['text-font'].replace(/'/g,'"'));
,
您可以将单引号替换为双引号,然后使用 JSON.parse() 将其转换为实际的字符串数组。
obj["text-font"] = JSON.parse(obj["text-font"].replaceAll("'",'"'))
查看此处了解更多信息: MDN Web Docs: JSON.parse()
,也许使用 eval() ** 但要注意安全问题,见下文
let obj = {
"text-font": "['Open Sans Regular','Arial Unicode MS Regular']"
}
console.log(eval(obj['text-font']))
// to fix the object
obj['text-font'] = eval(obj['text-font']);
console.log(obj)
eval() has security risks 和恶意用户可以使用浏览器内调试器通过 XSS attacks 执行他们自己的 javascript - 一般建议是不要鲁莽地使用它。