1

如何检查 cookie 中是否已存在数组元素?

这是我的代码:

var cookieList = function (cookieName) {
    var cookie = Cookies.get(cookieName);
    var items = cookie ? cookie.split(/,/) : new Array();

    return {
        "add": function (val) {
            items.push(val);
            Cookies.set(cookieName, items.join(','), { path: '/' });
        }
    }
}

var list = new cookieList("MyItems");

$('.items').on('click', '.add', function () {
    var imageId = $(this).data("id");
    list.add(JSON.stringify(imageId));
});
4

2 回答 2

2

您可以添加一个方法existscookieList然后使用检查传递的值是否存在于items数组中Array.indexOf()

var cookieList = function (cookieName) {
    var cookie = Cookies.get(cookieName);
    var items = cookie ? cookie.split(/,/) : new Array();

    return {
        "add": function (val) {
            items.push(val);
            Cookies.set(cookieName, items.join(','), {
                path: '/'
            });
        },
        exists: function (val) {
            return items.indexOf(val) > -1
        }
    }
}

var list = new cookieList("MyItems");

$('.items').on('click', '.add', function () {
    var imageId = $(this).data("id");
    list.add(JSON.stringify(imageId));
    var exists = list.exists(JSON.stringify(imageId))
});

演示:小提琴

于 2015-06-17T07:23:46.247 回答
0

FWIW,js-cookie开箱即用地处理 JSON:

var cookieList = function (cookieName) {
    var items = Cookies.getJSON(cookieName) || [];

    return {
        add: function (val) {
            items.push(val);
            Cookies.set(cookieName, items);
            // "path: /" is default,
            // see https://github.com/js-cookie/js-cookie/tree/v2.0.2#path
        },
        exists: function (val) {
            return items.indexOf(val) > -1
        }
    }
}

var list = new cookieList("MyItems");

$('.items').on('click', '.add', function () {
    var imageId = $(this).data("id");
    list.add(JSON.stringify(imageId));
    var exists = list.exists(JSON.stringify(imageId))
});

https://github.com/js-cookie/js-cookie/tree/v2.0.2#json

于 2015-06-30T00:16:24.890 回答