Tengo esta función para enviar datos a la matriz y guardarlos en el almacenamiento local. Mi problema es que mi función empuja a la matriz/guarda en el almacenamiento local a pesar de que existe el mismo ID de perfil. Quiero algo que verifique si el mismo ID de perfil ya existe, elimine el objeto y del almacenamiento local/matriz, luego empuje al almacenamiento local/matriz. En resumen, no quiero que se guarden duplicados del mismo ID de perfil en el almacenamiento local o en la matriz. También quiero mantener la mayoría de los objetos nuevos en lugar de los antiguos y nuevos guardados en la matriz para el mismo ID de perfil.
PUSHData(){ var myobj = { Button: this.isReadMore, Class: this.sampleElem.className, ProfiliD: this.id, }; const saved = JSON.parse(localStorage.getItem('CollapseState')); if(saved != null){ this.array.push(myobj); localStorage.setItem('CollapseState',JSON.stringify(this.array)); }else{ this.array.push(myobj); localStorage.setItem('CollapseState',JSON.stringify(this.array)); }así es como se ve localStorage ahora
0: {Button: true, Class: "ShowHide", ProfiliD: "115279"} 1: [{Button: true, Class: "ShowHide", ProfiliD: "115279"},…] 0: {Button: true, Class: "ShowHide", ProfiliD: "115279"} 1: [{Button: true, Class: "ShowHide", ProfiliD: "115192"}]Realmente agradecería cualquier ayuda.
debe actualizar el elemento existente en la matriz en lugar de insertar uno nuevo cuando existe el mismo ProfiliD en localStorage:
PUSHData(){ var myobj = { Button: this.isReadMore, Class: this.sampleElem.className, ProfiliD: this.id, }; const saved = JSON.parse(localStorage.getItem('CollapseState')); if(saved != null){ this.array[this.array.findIndex(x=>x.ProfiliD == myobj.ProfiliD)] = myobj; localStorage.setItem('CollapseState',JSON.stringify(this.array)); }else{ this.array.push(myobj); localStorage.setItem('CollapseState',JSON.stringify(this.array)); } }Como CollapseState contiene una matriz de objetos en un localStorage. Puede seguir los pasos a continuación para lograr este requisito :
Compruebe si la matriz CollapseState existe en localStorage o no (lo que ya está haciendo)
const saved = JSON.parse(localStorage.getItem('CollapseState')); Ahora que se saved una matriz, puede iterar sobre ella para verificar si ProfiliD existe o no. Si existe, empalme/elimine el objeto de la matriz.
saved.forEach((o, index) => { if (o.ProfiliD === myobj.ProfiliD) { saved.splice(index, 1); } }); Ahora inserte el newObj en la matriz guardada.
saved.push(newObj); Paso final, configure esta matriz saved actualizada en localStorage.
localStorage.setItem('CollapseState',JSON.stringify(saved));