如何使用javascript替换本地存储中的值?



如果该值存在于localstorage中,我想替换它。当我尝试这样做,现有的值仍然插入。

addEntry = (e,id) => {

e.preventDefault()
let product_list = []
let productCost = document.getElementById('projectcost').value;
let productQty = document.getElementById('productQty'+id).value;
let productId = id;
if(localStorage.getItem('myItems')){

product_list = JSON.parse(localStorage.getItem('myItems'))
product_list.push({productId,productCost,productQty})
localStorage.setItem('myItems',JSON.stringify(product_list))
}else{

product_list.push({productId,productCost,productQty})
localStorage.setItem('myItems',JSON.stringify([{productId,productCost,productQty}]))
}
}

[{"productId":43,"productCost":"320","productQty":"2"},{"productId":43,"productCost":"480","productQty":"3"},{"productId":44,"productCost":"420","productQty":"3"}]

当我想插入相同的值时,我希望输出为

[{"productId":43,"productCost":"480","productQty":"3"},{"productId":44,"productCost":"420","productQty":"3"}]

为了避免再次推送同一产品,首先要过滤掉可能涉及同一产品的对象:

let productCost = +document.getElementById('projectcost').value;
let productQty = +document.getElementById('productQty'+id).value;
let product_list = JSON.parse(localStorage.getItem('myItems') ?? "[]");
.filter(({productId}) => productId != id)
.concat({productId: id, productCost, productQty});
localStorage.setItem('myItems', JSON.stringify(product_list));

最新更新