Art*_*mis 5 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});
Run Code Online (Sandbox Code Playgroud)
这仅在第一次有效,任何后续时间我都会收到错误并且数组长度变为1。我确信这是因为我缺少方括号,但如果我尝试:
Cookies.set('points', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]', { expires: 30 });
Run Code Online (Sandbox Code Playgroud)
该变量变成长度为 1 的对象并且不起作用。
第二次失败的原因是您将Cookies.set数组作为第二个参数传递给数组,并假设这最终将在 cookie 中作为逗号分隔的字符串。但在这种情况下,js-cookie 会通过添加方括号来转换为字符串。
所以非常快速的解决方案是改变这一点:
Cookies.set('points', points, {expires: 30});
Run Code Online (Sandbox Code Playgroud)
到:
Cookies.set('points', points.toString(), {expires: 30});
Run Code Online (Sandbox Code Playgroud)
但是,最好“自己”进行JSON.stringify或JSON.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15910 次 |
| 最近记录: |