【问题标题】:Check if a cookie array element exists检查cookie数组元素是否存在
【发布时间】:2015-09-02 06:56:04
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery cookies js-cookie


    【解决方案1】:

    您可以在cookieList中添加一个方法exists,然后使用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))
    });
    

    演示:Fiddle

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-23
        • 2010-12-30
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 2012-11-20
        相关资源
        最近更新 更多