Tengo un programa donde tengo estas cadenas que se agregan a una matriz. Sin embargo, hay muchas cadenas que se desencadenan por una determinada condición, que se puede cumplir varias veces, sin embargo, solo quiero que se agregue la primera vez. Entonces, implementé un sistema donde el evento de agregar la cadena a la matriz se desencadena por la condición original y una expresión booleana. Aquí hay un ejemplo de una de esas condiciones:
if (count >= 10 && displayMulti == true) { consoleData.shift() consoleData.push("Multi available") displayMulti = false window.localStorage.setItem("display_multi", String(displayMulti)) updateConsole() }Cuando la cadena se agrega a la matriz, el booleano, displayMulti, se establece en falso para que no se active nuevamente. Sin embargo, al actualizar la página, aún se activará. No estoy seguro de por qué, porque siento que he guardado correctamente los valores en el almacenamiento local. El código está abajo:
if (window.localStorage.getItem("display_multi") != null ) { displayMulti = Boolean(window.localStorage.getItem("display_multi")) } else { console.log("here") var displayMulti = true }La declaración de registro de la consola "aquí" no se activa. Entonces, no tengo idea de por qué esto seguiría activándose porque no veo cómo el valor booleano es cierto. He probado en tantos puntos diferentes que realmente no tengo idea de qué está mal. Tampoco creo que esos valores se vean afectados en ningún otro lugar de mi código. Cualquier ayuda es apreciada.
Aquí hay una solución que analiza correctamente su cadena como un valor booleano. En lugar de Boolean() , se usa un condicional (window.localStorage.getItem("display_multi") === 'true') (window.localStorage.getItem("display_multi") === 'true').
if (window.localStorage.getItem("display_multi") != null ) { displayMulti = (window.localStorage.getItem("display_multi") === 'true') } else { console.log("here") var displayMulti = true } if (count >= 10 && displayMulti == true) { consoleData.shift() consoleData.push("Multi available") displayMulti = false window.localStorage.setItem("display_multi", String(displayMulti)) updateConsole() }