在 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); // ["中国"]