当今的尖叫-Javascript以不同的方式序列化数组

当今的尖叫-Javascript以不同的方式序列化数组,javascript,jquery,cookies,Javascript,Jquery,Cookies,这让我现在非常恼火: 考虑一个包含2个值的数组: var myArray = new Array(); myArray.push(21031); myArray.push(21486); 使用jquery和toJSON将其存储在cookie中时,cookie的值如下所示: ["21031","21486"] 21239 现在考虑一个单一值数组: var myArray = new Array(); myArray.push(21239); 使用jquery和toJSON将其存储在cook

这让我现在非常恼火:

考虑一个包含2个值的数组:

var myArray = new Array();
myArray.push(21031);
myArray.push(21486);
使用jquery和toJSON将其存储在cookie中时,cookie的值如下所示:

["21031","21486"]
21239

现在考虑一个单一值数组:

var myArray = new Array();
myArray.push(21239);
使用jquery和toJSON将其存储在cookie中时,cookie的值如下所示:

["21031","21486"]
21239
这对我来说几乎是完全无用的,因为当我从cookie中提取项目时,一个返回为单个值,另一个返回为我可以迭代的数组……啊


为什么?

Cookies是字符串,所以您所做的只是存储数组的字符串序列化。如果我这样做:

document.cookie = [1, 2].toString()
然后document.cookie的值为“1,2”,它不是数组


编辑:由于toJSON不是一个原生jQuery方法,它可能来自一个插件。你看过插件文档了吗?或者,尝试一个不同的插件,按照您的预期工作。

Cookies是字符串,所以您所做的只是存储数组的字符串序列化。如果我这样做:

document.cookie = [1, 2].toString()
然后document.cookie的值为“1,2”,它不是数组


编辑:由于toJSON不是一个原生jQuery方法,它可能来自一个插件。你看过插件文档了吗?或者,尝试一个不同的插件,按照您的预期工作。

您做错了什么。不管您使用的是什么JSON库(假定它实际工作),序列化如下:

[21031, 21486]
应产生以下结果:

"[21031,21486]"

不是您发布的
[“21031”,“21486”]
。看起来您正在序列化各个元素。发布更多代码。

您做错了什么。不管您使用的是什么JSON库(假定它实际工作),序列化如下:

[21031, 21486]
应产生以下结果:

"[21031,21486]"
不是您发布的
[“21031”,“21486”]
。看起来您正在序列化各个元素。发布更多代码。

我建议使用。这两种情况都是正确的:

// [] is the same as new Array();
var foo = [];

foo.push(1);
foo.push(2);

JSON.stringify(foo); // "[1, 2]"

var bar = [];

bar.push(1);

JSON.stringify(bar); // "[1]"
此外,当您使用json2.js API时,您的代码会自动利用较新浏览器中的浏览器本机功能。

我建议使用。这两种情况都是正确的:

// [] is the same as new Array();
var foo = [];

foo.push(1);
foo.push(2);

JSON.stringify(foo); // "[1, 2]"

var bar = [];

bar.push(1);

JSON.stringify(bar); // "[1]"
此外,当您使用json2.js API时,您的代码会自动利用较新浏览器中的浏览器本机功能。

我已签出,它似乎能按预期工作,即使对于单元素数组也是如此。你能详细介绍一下cookie部分吗?我检查过了,它似乎像预期的那样工作,即使对于单元素数组也是如此。你能再详细说明一下饼干的部分吗?