将字符串转换为数组,反之亦然

时间:2013-12-24 19:27:01

标签: javascript jquery arrays string cookies

此代码允许您在cookie中插入变量数组,然后对其进行修改。

您需要导入jquery.cookie.js http://plugins.jquery.com/cookie/

<script type="text/javascript" src="include/js/jcookie/jquery.cookie.js"></script>

此功能检查cookie。

//Funzione controllo cookie
function checkcookie() {

    if (typeof $.cookie('cookie') == 'undefined') {
        newcookie();
    }
}

此函数将数组转换为字符串并创建cookie。

//Funzione crea cookie
//crea un array e lo trasforma in stringa per il cookie
function newcookie() {
var cookievars = [$.now(),'','','','','','','',''];
    var a = "";
    for(key in cookievars)
    {
        b = cookievars[key]+",";
        a = a.concat(b);
    }
a = a.substring(0,a.length-1);
console.log(a);
$.cookie('cookie', a, { expires: 365 });
}

此函数将字符串变量获取到cookie中并将其转换为数组;修改数组并转换字符串以覆盖cookie

//Funzione modifica cookie
//apre il cookie e recupera la stringa che viene trasformata 
//in aarray, modificata e ritrasformata in stringa per il cookie
function modcookie(idlink) {
    var a = $.cookie('cookie');
    var a = a.split(",");
    for(key in a)
    {
        if (a[key] =='') {
            a[key] = idlink;
            break;
        }
    }

b = "";
for(key in a)
    {
        c = a[key]+",";
        b = b.concat(c);
    }
b = b.substring(0,b.length-1); //rimuove l'ultima virgola ","
console.log(b);
$.cookie('cookie', b, { expires: 365 });
}

有人知道如何做得更好吗?

1 个答案:

答案 0 :(得分:1)

为什么不使用JSON序列化?您可以在写入cookie之前将数据序列化为JSON,并在读取cookie之后以及在使用/修改数据之前进行反序列化。

示例:

function writeJSONCookie(cookieName, data, options) {
    options = options || {};
    $.cookie(cookieName, JSON.stringify(data), options);
}

function readJSONCookie(cookieName) {
    return JSON.parse($.cookie(cookieName));
}

// usage sample
var cookieData = readJSONCookie('someCookie');
// change data
cookieData.property = 'new value';
// persist change
writeJSONCookie('someCookie', cookieData);

这可以灵活地将任何类型的对象或数组存储到任意cookie中。您无需执行当前正在执行的任何手动级联业务。

既然我已经向您展示了这样做的手动方式,我还要指出,Cookie插件支持自动将数据转换为JSON或从JSON转换数据。只需设置以下选项:

$.cookie.json = true;

上面的用法示例变得简单(不需要之前定义的函数):

// usage sample
$.cookie.json = true;
var cookieData = $.cookie('someCookie');
// change data
cookieData.property = 'new value';
// persist change
$.cookie('someCookie', cookieData);