繁体   English   中英

检查cookie数组元素是否存在

[英]Check if a cookie array element exists

如何检查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));
});

您可以将exists的方法添加到cookieList ,然后使用Array.indexOf()检查传递的值是否在items数组中。

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))
});

演示: 小提琴

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM