Quiero actualizar un solo objeto en mi localStorage. Hice una página de detalles, donde puedo enviar nuevos valores (progreso y valor) Cuando quiero actualizar el valor, cambia el valor en ambos objetos. ¿Cómo puedo cambiar solo un objeto?
Aquí está mi enlace de implementación (su trabajo en progreso) https://mastery-app.herokuapp.com/
Esta es mi matriz de almacenamiento local:
skills[ { "title": "Sewing", "imageSrc": "images.unsplash.com", "description": "Make your own clothes", "category": "crafting", "progress": 500, "isDone": false, "rank": 0, "value": 0 }, { "title": "Crocheting", "imageSrc": "images.unsplash.com", "description": "Interlock loops of yarn", "category": "crafting", "progress": 500, "isDone": false, "rank": 0, "value": 0 } ]Así es como actualizo el almacenamiento local:
const update = skills.map((skills) => { skills.title === skills.title; const updateProgress = skills.progress - value; const rankNumber = parseInt(ranking); const updateRank = skills.rank + rankNumber; console.log(updateRank); const updateValue = skills.value + value; return { title: skills.title, rank: updateRank, description: skills.description, progress: updateProgress.toFixed(1), imageSrc: skills.imageSrc, category: skills.category, isDone: false, value: updateValue, }; }); localStorage.setItem('skills', JSON.stringify(update));Puede considerar usar el método de find para encontrar el objeto que desea actualizar. map no es la función adecuada para su caso de uso. También skills.title === skills.title; no tiene ningún efecto (tal vez quería usar una declaración if para hacer algún tipo de filtrado usando el título, pero eso siempre devolvería verdadero). Por favor, elimine eso.
Ahora, no sé exactamente qué campo usará para buscar el objeto que desea actualizar, pero tiene que ser único. Si ninguno de los campos en los objetos es único, debe considerar agregar un campo de id único en los objetos de habilidades. Pero si el título es único, puede usar el título para buscar. Entonces puedes hacer algo como el pseudocódigo a continuación:
const toUpdate = skills.find(skill => skill.title === your_title_here) toUpdate.field_to_update_1 = some_value_1 toUpdate.field_to_update_2 = some_value_2 localStorage.setItem('skills', JSON.stringify(skills))Consulte también los documentos de MDN para ver cómo funcionan map , find y otros métodos de matriz y algunos de sus casos de uso.