在 JavaScript 中将字符串转换为数组而不使用 eval()

xai*_*ai2 3 javascript cookies web

我想为我的网站中访问的独特文章实现一个计数器,基本上将用户访问过的文章的 ID 存储在 cookie 中。我的问题是恢复的值当然是一个字符串。如何将这样的字符串转换"['test','b','c']"为数组?不建议使用 eval,对吗?

Cer*_*nce 5

用于JSON.parse将字符串转换为数组:

const string = '["test","b","c"]';
const arr = JSON.parse(string);
console.log(arr[0]);
Run Code Online (Sandbox Code Playgroud)

请注意,您需要具有正确的 JSON 格式,但键和非数字值需要有引号。使用 JSON.stringify 自动序列化最简单:

const arr = ["test","b","c"];
const str = JSON.stringify(arr);
console.log(str);
Run Code Online (Sandbox Code Playgroud)

如果您绝对无法更改最初使用的字符串中的单引号,请使用replace将其转换为可解析的内容:

const str = "['test','b','c']";
const jsonFormattedStr = str.replace(/'/g, '"');
const arr = JSON.parse(jsonFormattedStr);
console.log(arr[1]);
Run Code Online (Sandbox Code Playgroud)