Quiero verificar si existe una identificación en la base de datos, simplemente la reemplazará. Cuando trato de hacer eso, estoy agregando la misma identificación.
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":44,"productName":"Cleansing milk with Toner","productCost":"140","productQty":"1"},{"productId":44,"productName":"Cleansing milk with Toner","productCost":"280","productQty":"2"},{"productId":44,"productName":"Cleansing milk with Toner","productCost":"420","productQty":"3"}]salida que quiero
[{"productId":44,"productName":"Cleansing milk with Toner","productCost":"280","productQty":"2"},{"productId":43,"productName":"Hair Spa 100 gm","productCost":"160","productQty":"1"}]debe verificar si el producto ya está ubicado en localStorage , si es así, indíquelo y reemplácelo y, si no, simplemente agréguelo a product_list
prueba esto
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')) const DuplicatedIndex = product_list.findIndex(product => product.productId == productId) if(DuplicatedIndex == -1) { product_list.push({productId,productCost,productQty}) } else { product_list[DuplicatedIndex] = {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}])) } }Antes de insertar el nuevo elemento en product_list , debe verificar si esa lista tiene el elemento cuyo productId es igual a productId y luego reemplazarlo con el nuevo elemento o simplemente insertar ese elemento. Voy a poner el código correcto a continuación:
const index = product_list.findIndex(item => item.productId === productId); if(index === -1) { product_list.push({productId,productCost,productQty}); } else { product_list[index] = {productId,productCost,productQty}; }