Как добавить значение массива в существующий файл cookie jQuery? - PullRequest
0 голосов
/ 15 октября 2019

Я использую https://github.com/carhartl/jquery-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 голосов
/ 15 октября 2019

Хитрость заключается в использовании 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/

К сожалению, я не смог использовать $ .cookie () в SO фрагменте, поэтому я связал рабочую скрипку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...