在 JavaScript 中,如果要将字符串 "['中国']" 转换成数组形式 ['中国'],可以使用以下几种方法:
JSON.parse()(推荐)如果字符串是有效的 JSON 格式(例如 '["中国"]'),可以直接用 JSON.parse() 解析:
const str = '["中国"]';
const arr = JSON.parse(str);
console.log(arr); // ["中国"]
console.log(arr[0]); // "中国"
但如果字符串是 "['中国']"(单引号),JSON.parse 会报错,因为 JSON 标准要求字符串必须使用双引号:
const str = "['中国']";
JSON.parse(str); // ❌ 报错:Unexpected token ' in JSON
eval()(不推荐,存在安全风险)eval() 可以执行字符串代码,但不推荐使用,因为它可能执行恶意代码:
const str = "['中国']";
const arr = eval(str);
console.log(arr); // ["中国"]
如果字符串格式固定(如 "['中国']"),可以手动提取内容:
const str = "['中国']";
const arr = str.slice(2, -2).split("','").map(item => item.replace(/'/g, ''));
console.log(arr); // ["中国"]
replace() + JSON.parse() 转换单引号为双引号如果字符串是 "['中国']",可以先用 replace() 替换单引号为双引号,再用 JSON.parse():
const str = "['中国']";
const validJsonStr = str.replace(/'/g, '"');
const arr = JSON.parse(validJsonStr);
console.log(arr); // ["中国"]
| 方法 | 适用情况 | 示例 | 备注 |
|---|---|---|---|
JSON.parse(str) |
'["中国"]'(双引号) |
JSON.parse('["中国"]') |
✅ 推荐 |
eval(str) |
"['中国']"(单引号) |
eval("['中国']") |
❌ 不安全 |
| 手动处理 | 格式固定 | str.slice(2, -2).split("','") |
适用于简单情况 |
replace + JSON.parse |
"['中国']" → '["中国"]' |
JSON.parse(str.replace(/'/g, '"')) |
✅ 推荐 |
推荐做法:
如果字符串是 '["中国"]'(双引号),直接用 JSON.parse()。
如果是 "['中国']"(单引号),先用 replace() 替换成双引号,再用 JSON.parse()。
const str = "['中国']";
const arr = JSON.parse(str.replace(/'/g, '"'));
console.log(arr); // ["中国"]