将值添加到数组cookie

时间:2013-09-19 16:14:27

标签: javascript jquery arrays cookies

我需要将新变量添加到数组中,该数组存储在cookie中。我怎么能这样做?

var arr = $.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]);
// this is an array of diferent numbers

function pri() { // this function create a number that is not in the array
var n = Math.floor((Math.random() * 15));
var tex;
while ((tex = $.inArray(n, arr)) != -1) {
    n = Math.floor((Math.random() * 15));
}
return n;} //i need for whatever "n" is to be added to my array cookie

2 个答案:

答案 0 :(得分:1)

$ .cookie插件会将数组保存为字符串,并且:

var arr = $.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]);

返回请求,例如:

arr=1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9

你必须首先保存数组,然后将字符串返回并再次拆分,然后你可以推送它:

$.cookie("arr",[1, 2, 3, 4, 5, 6, 7, 8, 9]); // set the cookie

var arr = $.cookie("arr").split(',');        // get the string and split it

arr.push(pri()); // then add whatever the function returns

现在您可以将修改后的数组保存回cookie

$.cookie("arr", arr);

答案 1 :(得分:0)

cookie中的值只能是字符串,因此请使用(非)序列化程序。

JSON在JavaScript中运行良好:

$.cookie("key", JSON.stringify([ 1, 2, 3]);

用法:

function add_value(new_value) {
    var value = JSON.parse($.cookie("key")); // unserialize
    value.push(new_value);                   // modify
    $.cookie("key", JSON.stringify(value));  // serialize
}