当值用引号括起来时,如何将 Javascript 对象值转换为数组?

问题描述

如何将这个字符串的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 - 一般建议是不要鲁莽地使用它。