我正在使用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”]很好!
那么我现在如何遍历数组以查看它是否具有特定值?
感谢任何输入,谢谢。
答案 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(),这就是为什么我将工作提琴链接起来的原因。