在 Jquery 中创建或更新 cookie 数组

Create or Update cookie array in Jquery

本文关键字:更新 cookie 数组 创建 Jquery      更新时间:2023-09-26

如果值为 0,我想创建,如果值为 1,则更新。

所以我写了这个,

var juiceCart = [{
    'name': val,
    'count': unTouch
}];
if (value == 0) {
    console.log('create cookie');
    $.cookie("juiceCart", JSON.stringify(juiceCart));
    doDummyCall();
} else {
    console.log('update cookie');
    $.cookie("juiceCart", JSON.stringify(juiceCart));
    doDummyCall();
}

doDummyCall()

我只是在做一个 ajax 调用来更新标头和

var cookieJuiceCart = $.parseJSON($.cookie("juiceCart"));
$.each(cookieJuiceCart, function (index, value) {
    console.log('Id : ' + value.name);
    console.log('Value : ' + value.count);
});

然后在每个函数中打印 cookie 以了解其中存在的所有项目。

如果我添加第一项,它正在打印

编号 : 1值 : 1

然后,如果我添加第二个项目,它正在打印

编号 : 2值 : 1

但我期望的是

编号 : 1值 : 1编号 : 2值 : 1

我知道旧值被替换了,因为我没有推动其中的值。

所以,我做到了

juiceCart.push({'name': val, 'count': unTouch});

但它只是用新价值替换旧值。

如何检查数组中是否存在旧值并根据它创建或更新。

在我看来,实际问题是您的数组:

var juiceCart = [{
    'name': val,
    'count': unTouch
}];

这是使用 vars 更新相同的对象而不是推送新对象。

您可以这样做:

var juiceCart = $.parseJSON($.cookie("juiceCart")) || []; // create a blank array taken from @apokryfos's answer.
juiceCart.push({'name': val, 'count': unTouch}); // <---now push it here.

这样,您就可以在每次调用新对象时推送它。

这是我从这个问题中得到的。这有点解释得很差,所以我可能不明白你需要做什么。

var juiceCart = $.parseJSON($.cookie("juiceCart")) || [];
var newItem = true;
juiceCart.each(function (i, v) { 
    if (v.name == val) { v.count++; newItem = false; }
});
if (newItem) {
    juiceCart.push({'name': val, 'count': unTouch});
}
$.cookie("juiceCart", JSON.stringify(juiceCart));
doDummyCall();