【问题标题】:How do I add a array value to existing jQuery cookie?如何将数组值添加到现有的 jQuery cookie?
【发布时间】:2019-10-16 02:24:13
【问题描述】:

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

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

感谢任何意见。

【问题讨论】:

  • 所以你希望值为['111', 'somethingelse'] ?
  • 我希望值变成 ['111','222'] 等等,这样我就可以向现有 cookie 添加多个值。
  • 那我建议把初始值改成['111'],当你需要添加更多时,你只需将值推送到数组中,然后将其设置回cookie上
  • 好的,谢谢,但我用这个测试过: $.cookie('amnotiser', '["111"]'); var amnotiser = $.cookie('amnotiser'); console.log(amnotiser) amnotiser.push('222') var amnotiser = $.cookie('amnotiser'); console.log(amnotiser) 但我收到一条错误消息“amnotiser.push 不是函数。”
  • 我会假设 cookie 中的值是一个字符串。您可能必须在设置值时对其进行字符串化,并在检索时对其进行解析

标签: jquery cookies


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-06-13
    • 2019-12-26
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 2014-01-10
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多