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



我使用 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"] 好!

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

任何意见表示赞赏,谢谢。

诀窍在于使用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((,这就是我链接工作小提琴的原因。

最新更新