如何将数组值添加到现有的jQuery Cookie?

时间:2019-10-15 15:55:44

标签: jquery cookies

我正在使用https://github.com/carhartl/jquery-cookie设置cookie,现在我需要在一个cookie中设置多个值(数组),然后可以检查其中任何一个值是否等于另一个值。

所以可以说我为此设置了一个cookie:

var date = new Date();
var minutes = 60;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie('amnotiser', '111', { expires: date });

然后,稍后我要检查cookie是否具有值,例如,我要检查cookie是否具有值222,如果没有,则在不删除现有值的情况下添加它。如果它已经具有值222,则什么也不做。

var amnotiser = $.cookie('amnotiser');

if(amnotiser===222){
 //do nothing...
}else{
 add the value to the cookie...
}

好,所以我可以添加一个值:

var amnotiser = $.cookie('amnotiser');
var newvalue = "222";
thearray = new Array();
thearray.push(amnotiser+","+newvalue);
console.log(thearray)
$.cookie('amnotiser', thearray);

这将增加222,因此看起来像这样:[“ 111,222”]很好!

那么我现在如何遍历数组以查看它是否具有特定值?

感谢任何输入,谢谢。

1 个答案:

答案 0 :(得分:0)

诀窍在于使用JSON.stringify()JSON.parse(),如下所示:

var date = new Date();
var minutes = 60;

date.setTime(date.getTime() + (minutes * 60 * 1000));

const setAmnotiser = (data, date) => {
  let arr = []
  arr = [...getAmnotiser()]
  if (!checkForValue(arr, data)) arr.push(data)
  $.cookie('amnotiser', JSON.stringify(arr), {
    expires: date
  });
}

const getAmnotiser = () => {
  if ($.cookie('amnotiser')) return JSON.parse($.cookie('amnotiser'))
  return []
}

const checkForValue = (arr, data) => {
  return arr.includes(data)
}

console.log('0', getAmnotiser())
setAmnotiser('111', date)
console.log('1', getAmnotiser())
setAmnotiser('222', date)
console.log('2', getAmnotiser())
setAmnotiser('222', date)
console.log('3', getAmnotiser())

这是一个小提琴:https://jsfiddle.net/mukagergely/rxz6hov3/

不幸的是,我无法在SO代码段中使用 $。cookie(),这就是为什么我将工作提琴链接起来的原因。

相关问题