Hay una matriz de cadenas en el almacenamiento local. Quiero encontrar un valor específico de esa matriz y actualizar solo ese valor específico sin cambiar el resto de la matriz.
function saveLocalChecked(task) { let tasks = JSON.parse(localStorage.getItem('tasks')); const taskIndex = task.children[1].innerText; for(let i = 0; i < tasks.length; i++) { if(tasks[i] === taskIndex) { localStorage.setItem('tasks', JSON.stringify(tasks[i] + '*')); } } }Entonces, en esta función, creo la matriz de tareas extrayendo los elementos del almacenamiento local. En el ciclo for , recorro la matriz de tareas para encontrar un elemento específico. Y ahora, quiero actualizar ese elemento concatenando el signo de asterisco. Pero después de verificar mi almacenamiento local, solo hay ese elemento actualizado y el resto de la matriz simplemente desapareció.
¿Cómo arreglar esto?
Esto se debe a que está reemplazando todo el almacenamiento para esa matriz específica con el único elemento al que aplica el cambio. Cambie el elemento que desea dentro de su condición if y envíe la matriz completa, con el elemento actualizado, de regreso al almacenamiento
function saveLocalChecked(task) { let tasks = JSON.parse(localStorage.getItem('tasks')); const taskIndex = task.children[1].innerText; for(let i = 0; i < tasks.length; i++) { if(tasks[i] === taskIndex) { tasks[i] = tasks[i] + '*' localStorage.setItem('tasks', JSON.stringify(tasks)); } } }Siempre puede recuperar datos del almacenamiento local, modificar los datos y almacenarlos nuevamente. En su caso, puede modificar directamente las tasks de la matriz antes de volver a almacenar la matriz modificada en el almacenamiento local.
function saveLocalChecked(task) { let tasks = JSON.parse(localStorage.getItem('tasks')); const taskIndex = task.children[1].innerText; //Modify elements for(let i = 0; i < tasks.length; i++) { if(tasks[i] === taskIndex) { tasks[i]+='*'; } } //Store modified array in localstorage localStorage.setItem('tasks', JSON.stringify(tasks)); }