Javascript 如果项已存在,如何在localStorage中更新数组obj

Javascript 如果项已存在,如何在localStorage中更新数组obj,javascript,jquery,Javascript,Jquery,想知道当项目已经存在时如何在localStorage中更新数组obj,mylocalStorage在刷新后创建一个新数组,而不是更新或添加新的obj 本地存储对象-- addToCart函数,我在其中添加我将对象推送到array[] var itemStorage = []; for (var key in drinkCounter) { ... var cartObj = { Product: key, Price: drinkCounter[key].price, Quan

想知道当项目已经存在时如何在
localStorage
中更新数组obj,my
localStorage
在刷新后创建一个新数组,而不是更新或添加新的obj

本地存储对象--

addToCart函数,我在其中添加我将对象推送到
array[]

var itemStorage = [];
for (var key in drinkCounter) {
...

        var cartObj = { Product: key, Price: drinkCounter[key].price, Quantity: drinkCounter[key].count + 'x ' }
        itemStorage.push(cartObj);
        localStorage.setItem('cart', JSON.stringify(itemStorage));
...

    }
下面是一个例子,因此,一旦您添加了一个项目并刷新页面并添加相同或新的项目,它就会重新创建
localStorage
,我如何更新它而不是每次刷新页面时重新创建一个新项目

编辑-- 如果添加了相同的项目,则应更新
{Quantity:}

根据下面的答案,我尝试更新现有项目的项目数量,但是没有成功。有什么建议吗

cartItems.forEach(function (item, i) {
            if (item.Product == key) {
                item.Quantity = drinkCounter[key].count;
                // item.Quantity += 1; // or no avail
                index = i;
            }
        });
固定本地存储数量计数

if (index !== -1) {
  cartItems[index].Quantity = parseInt(cartItems[index].Quantity) + 1 + 'x';
} else {
  var cartObj = { Product: key, Price: drinkCounter[key].price, Quantity: drinkCounter[key].count + 'x ' }
  cartItems.push(cartObj);
}
**编辑--**
关于总价的快速问题,有人能指出为什么当我添加一个项目时,总价是
0
,而它应该是项目价格

您不能避免将localStorage数据字符串化

var data = JSON.parse( localStorage.getItem('cart') );
for (var key in drinkCounter) {
...       

    // search for a product with current key
    var index = -1;
    data.forEach(function(item, i){
        if( item.Product === key ) {
            index = i;
        }
    });

    if (index !== -1) {
        // data[index] = cartObj;
        data[index].Quantity = parseInt(data[index].Quantity.split(x)[0]) + drinkCounter[key].count + 'x ';
    } else {
        var cartObj = { Product: key, Price: drinkCounter[key].price, Quantity: drinkCounter[key].count + 'x ' };
        data.push(cartObj);
    }
...
}

localStorage.setItem('cart', JSON.stringify(data));

sessionStorage
将在页面重新加载后删除!我想你的意思是使用
localStorage
!对不起,我在代码中更改了,忘了在这里更改。但它应该是
localStorage
。但是使用
localStorage
也存在问题,但是如何更新页面刷新后添加的相同项目的数量?已尝试添加
item.quantity=drinkCounter[key].count
if()
条件下,但这不起作用
var data=JSON.parse(localStorage.getItem('cart'))| |[]以防
购物车
尚未设置@ibrahimmahrir是的,我现在也提出了条件:),现在只需要更新数量。根据上面的答案更新了我的问题,尝试更新存储中现有项目的项目数量。有人能解释一下为什么它没有更新,当我添加相同的项目时,数量重置为1,因为它将其视为新项目。
var data = JSON.parse( localStorage.getItem('cart') );
for (var key in drinkCounter) {
...       

    // search for a product with current key
    var index = -1;
    data.forEach(function(item, i){
        if( item.Product === key ) {
            index = i;
        }
    });

    if (index !== -1) {
        // data[index] = cartObj;
        data[index].Quantity = parseInt(data[index].Quantity.split(x)[0]) + drinkCounter[key].count + 'x ';
    } else {
        var cartObj = { Product: key, Price: drinkCounter[key].price, Quantity: drinkCounter[key].count + 'x ' };
        data.push(cartObj);
    }
...
}

localStorage.setItem('cart', JSON.stringify(data));