Si el valor existe en el almacenamiento local, quiero reemplazarlo. Cuando trato de hacer ese valor existente todavía se está insertando.
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}])) } }Producción
[{"productId":43,"productCost":"320","productQty":"2"},{"productId":43,"productCost":"480","productQty":"3"},{"productId":44,"productCost":"420","productQty":"3"}]Cuando quiero insertar el mismo valor, quiero que la salida sea
[{"productId":43,"productCost":"480","productQty":"3"},{"productId":44,"productCost":"420","productQty":"3"}]Para evitar que envíe el mismo producto por segunda vez, primero filtre el objeto que podría afectar al mismo producto:
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));