如果值为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以了解其中的所有项目。
如果我添加第一项,则表示正在打印
Id:1 价值:1
然后,如果我添加第二项正在打印
同上:2 价值:1
但我期待的是
Id:1 价值:1 Id:2 价值:1
我知道旧值已被替换,因为我没有推动其中的值。
所以,我做了
juiceCart.push({'name': val, 'count': unTouch});
但它只是用新的价值取代旧价值。
如何检查数组中是否存在旧值并根据它创建或更新。
答案 0 :(得分:0)
在我看来,实际问题是你的数组:
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.
这样,每次调用它时都可以推送新对象。
答案 1 :(得分:0)
这是我从问题中得到的。它解释得有点糟糕,所以我可能没理解你需要做什么。
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();