javascript - 使用 js-cookie 和 JSON.parse 从 cookie 中设置和获取数组

标签 javascript cookies js-cookie

我正在使用 js-cookie 来存储数据并取回它们,我正在尝试对数组变量进行排序,但在维护其格式时遇到了麻烦。这是创建、检索、更改和保存 cookie 数据的过程,它有效但只是第一次,因为我无法

// store array in cookie  
Cookies.set('points', '0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0', { expires: 30 });

// get data from cookie into a variable (becomes a string)  
points = Cookies.get('points');

// convert to object with (length 12)
points = JSON.parse("[" + points + "]");

// change value of the array in the varable position
points[playerId]++;

// save data in cookie
Cookies.set('points', points, {expires: 30});

这只适用于第一次,任何后续时间我得到错误并且数组变为长度 1。我确定这是因为我缺少方括号但是如果我尝试:

Cookies.set('points', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]', { expires: 30 });

变量变成一个长度为1的对象,它不起作用。

最佳答案

第二次失败的原因是您向 Cookies.set 传递了一个数组作为第二个参数,假设这将在 cookie 中以逗号分隔的字符串结束。但是 js-cookie 在这种情况下会通过添加方括号来转换为字符串。

所以非常快速的解决方案是改变这个:

Cookies.set('points', points, {expires: 30});

到:

Cookies.set('points', points.toString(), {expires: 30});

但是,最好使用 JSON.stringifyJSON.parse 进行编码和解码,而无需“自己”进行任何字符串操作,如下所示:

var points = Array(12).fill(0);
Cookies.set('points', JSON.stringify(points), { expires: 30 });
var points = JSON.parse(Cookies.get('points'));
points[0]++;
Cookies.set('points', JSON.stringify(points), {expires: 30});
// ...etc

关于javascript - 使用 js-cookie 和 JSON.parse 从 cookie 中设置和获取数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59427538/

相关文章:

R httr 认证后下载在交互模式下工作但功能失败

javascript - Rails 6 与 js-cookie 库 : cookie is set but not persistent

npm - 如何正确使用 npm 和 webpack 要求 js-cookie? Uncaught ReferenceError

javascript - 如何使用 Ramda 将数组数组转换为对象数组?

javascript - Javascript 新手,需要 HTML5 音频帮助 "playlist"

php - 数据库/服务器设计(Cookie 和索引)- 整数还是文本?

javascript - Safari javascript cookie 问题

javascript - e.PreventDefault 未定义

javascript - 使用 Javascript 删除 DOM 元素