AnswerBun.com

Verificar que un valor existen en un JSON localStorage

Stack Overflow en español Asked by Carlos Roberto Luna Ochoa on October 4, 2020

Quiero que al hacer click en un boton primero verifique si el valor existe en un JSON que obtiene desde localStorage y si no existe lo guarde, pero cuando realiza la funcion aunque el valor exista sigue añadiendo el arreglo. La funcion es:

$('#btnNP').click(function(){
        if ($.trim($('#txtplayer').val())==''){         
            alert('Ingresa tu nombre de jugador');
            $('#txtpalabra').focus();
            return false;
        }

        var jugador =$('#txtplayer').val();

        for(var i in Jugadores)
        {
            var con = JSON.parse(Jugadores[i]);
            if(con[i].player === j){
            console.log(con[i].player); 
            }
            if(con.player == jugador){
                console.log(con.player);
            }
            else{
                var jugador_push = JSON.stringify({
                    "player" : jugador,
                    "score" : 0
                });
                Jugadores.push(jugador_push);
                localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
            }
        }
    });

One Answer

Bien, disculpa la demora, el Fiddle no me dejó compartirlo así que lo puse en un CodePen:

Esta así:

// find elements
var button = $("button")

window.localStorage.setItem("Jugadores","[]"); 

// handle click and add class
button.on("click", function(){
  	if ($.trim($('#txtplayer').val())==''){         
            alert('Ingresa tu nombre de jugador');
            $('#txtpalabra').focus();
            return false;
        }

        var jugador =$('#txtplayer').val();
        var Jugadores = localStorage.getItem("Jugadores"); 
        Jugadores = JSON.parse(Jugadores);
        
        if(Jugadores.length == 0)
        {
        	var jugador_push = JSON.stringify({
                    "player" : jugador,
                    "score" : 0
                });
                Jugadores.push(jugador_push);
                localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
        }
        else
        {
            var yaExiste = false;

            for(var i in Jugadores)
            {
                var con = JSON.parse(Jugadores[i]);
                //if(con[i].player === j){
                  //console.log(con[i].player); 
                //}
                if(con.player == jugador){
                    yaExiste = true;
                }
            }
            
            if(yaExiste)
            {
               console.log(con.player);
            }
            else
            {
                var jugador_push = JSON.stringify({
                        "player" : jugador,
                        "score" : 0
                 });
                 Jugadores.push(jugador_push);
                 localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
            }
        }

        console.log(localStorage.getItem("Jugadores"))
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="banner-message">
  <p>Jugadores</p>
  <input id="txtplayer" value=""/>
  <button>Agregar</button>
</div>

El problema radica que cuando haces el FOR, recorre el arreglo entero, y eventualmente encuentra alguno que no coincide, entonces lo agrega. Utilizando una bandera yaExiste = false Nos permite revisar el arreglo y ya que vimos que ya existe, no agregarlo, y en caso contrario agregarlo. Espero este claro, sino cualquier duda avisame :)

**No funcione el codigo aquí por el localstorage, te dejo el link del Codepen

Answered by TppShaka77 on October 4, 2020

Add your own answers!

Related Questions

Error al iniciar servicio SQL Server

0  Asked on January 24, 2021 by jorge-galibert

     

Montar proyecto laravel 5.7 en hosting

1  Asked on January 24, 2021 by isc-ramirez

 

Solicitud Api google maps – javascript php

0  Asked on January 23, 2021 by esteban-baquero

       

Como evaluar si un audio se esta reproduciendo

1  Asked on January 23, 2021 by pancho-bolatti

       

Obtener nombre de una imagen cargada en PHP (Codeigniter)

1  Asked on January 22, 2021 by juan-luis

     

Obtener nombre de mes en Español (Laravel, Carbon)

6  Asked on January 22, 2021 by c47

   

Inyección de dependencias con listas?

0  Asked on January 22, 2021 by kenneth-steve-aguilar

       

Error al comunicar Sentry con Laravel 8

0  Asked on January 21, 2021 by dany-villarroel

   

¿como decifrar la cadena de conexion en el config?

1  Asked on January 21, 2021 by jose-leonardo-quiones

     

Conectar Angular 10 con una api en contenedores docker

0  Asked on January 20, 2021 by jodurpar

     

La conexión java con mysql no funciona

1  Asked on January 20, 2021 by carlos-aburto

     

Editar/Eliminar datos Firebase sobre un RecyclerView

1  Asked on January 19, 2021 by cristian-prieto-beltran

   

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir