Удалять мусор array

У меня есть следующий код: то, что я стараюсь делать, состоит в том, что, когда новый пользователь хочет зарегистрироваться в моем проекте, он должен наполнять формуляр, 3 раза однажды посланный 3 раза только что, реестр будет успешным. По этой причине я использую localStorage чтобы сохранять данные о первом, втором и третьем отправлении формуляра.

Код, который я представляю в действительности, - абстракция (минимальный, я завершаю и проверяемо) моего реального кода (он был бы много кодом).

Код, что публика не функционирует в SOes (я не знаю, почему), протестируйте это локальным способом пожалуйста.

var nombreAux = "";
var apellidoAux = "";
var dato_G = []; //tiempo de presion y realce
var dato_aux = [];

var iteracion = 0;

$(window).on('load', function () {
    $('#add-new-fact').click(function () {
        var nombreUser = $('#nom').val();
        var passUser = $('#pass').val();
        var dato = $('#dato').val();
        dato_aux.push(dato);

        if (nombreUser != "" && passUser != "") {

            /*Guardando los datos en el LocalStorage*/
            nombreAux = localStorage.getItem("Nombre");
            apellidoAux = localStorage.getItem("contrasena");
            // alert(nombreAux+" "+apellidoAux);
            if ((nombreAux == "" || apellidoAux == "")) {
                localStorage.setItem("Nombre", nombreUser);
                localStorage.setItem("contrasena", passUser);
            }
            nombreAux = localStorage.getItem("Nombre");
            apellidoAux = localStorage.getItem("contrasena");

            if (((nombreUser != nombreAux || passUser != apellidoAux))) { //cuando es nuevo user
                localStorage.setItem("Nombre", nombreUser);
                localStorage.setItem("contrasena", passUser);
                dato_G.push(JSON.stringify(dato_aux));
                localStorage['dato'] = dato_G;
                dato = [];
            }

            if ((nombreUser == nombreAux || passUser == apellidoAux) && (iteracion < 6) && (typeof dato != undefined)) { //cuando ya es un usuario
                iteracion++;
                if (dato.length > 0) {
                    dato_G.push(JSON.stringify(localStorage['dato']));
                    dato_G.push(JSON.stringify(dato_aux));
                    dato_aux = [];
                }

                localStorage['dato'] = dato_G;
            }

            alert(localStorage['dato']);

            location.reload();

            if (iteracion == 3) {

                //por medio de ajax recien envio los datos para su registro en la BD

            }
            return false;

        }
        alert(localStorage['dato']);
        nombreUser = "";
        passUser = "";
    });
});
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="main.js"></script>
</head>
<body>

<input id="nom" type="text" placeholder="nombre">
<input id="pass" type="text" placeholder="pass">
<input id="dato" type="text" placeholder="dato">
<a href="#" id="add-new-fact" >enviar</a>

</body>
</html>

Результат производит мне один array "зараженный" или с мусором, похожий на нижний screenshot:

Я хотел бы остаться только с arrays. Будет возможно?

Заметь: по мере того, как оно введено array он наполняется большим количеством мусора.

Как предотвращать этот мусор? Почему он производится?

0
задан 14.07.2019, 05:32
0 ответов

Честно, я страдаю морской болезнью немного пробуя интерпретировать код, а следовательно я напечатаю частичный ответ, надеясь, что он подает тебя.

Проблема состоит в том, что ты используешь JSON.stringify() на переменной, которая уже является JSON, а следовательно он заканчивает тем, что убегает символы больше одного раза.

Чтобы это решать, манипулировали стоимостью dato, не пробуй превращать это / в JSON в главную часть твоего кода, манипулируй этим как объект, не конвертируя этого. И, потом, превращение было бы сделано только в момент сохранения или чтения localStorage.

function recuperarDato(clave) {
    return JSON.parse(localStorage.getItem(clave));
}

function guardarDato(clave, objeto) {
    localStorage.setItem(clave, JSON.stringify(objeto));
}

Так, чтобы сохранять:

guardarDato("dato", dato_G);

И чтобы это читать:

dato_G = recuperarDato("dato");
3
ответ дан 03.12.2019, 17:55

чтобы решать мою проблему я был должен использовать JSON.stringify и JSON.parse, и я не схватил только JSON.stringify() как postee в вопросе.

 var nombreAux   = "";
    var apellidoAux ="";
    var dato_G= []; //tiempo de presion y realce
    var dato_aux=[];

var iteracion=0;


$(window).on('load', function() {  
    $('#add-new-fact').click(function() {
    var nombreUser = $('#nom').val();
    var passUser = $('#pass').val();
    var dato = $('#dato').val();
    dato_aux.push(dato);

if(nombreUser!="" && passUser!=""){

/*Guardando los datos en el LocalStorage*/
    nombreAux   = localStorage.getItem("Nombre");
    apellidoAux = localStorage.getItem("contrasena");
// alert(nombreAux+" "+apellidoAux);
   if((nombreAux==""||apellidoAux=="")){
        localStorage.setItem("Nombre", nombreUser);
        localStorage.setItem("contrasena", passUser);
    }
    nombreAux   = localStorage.getItem("Nombre");
    apellidoAux = localStorage.getItem("contrasena");

    if(((nombreUser!=nombreAux || passUser!=apellidoAux))){//cuando es nuevo user
        localStorage.setItem("Nombre", nombreUser);
        localStorage.setItem("contrasena", passUser);
        dato_G.push(JSON.stringify(dato_aux));
        localStorage['dato']=JSON.stringify(JSON.parse(dato_G));
        dato=[];
    }

    if((nombreUser==nombreAux || passUser==apellidoAux) && (iteracion<3) &&(typeof dato!=undefined) ){//cuando ya es un usuario 
        iteracion++;
        if(dato.length>0){
            dato_G.push(localStorage['dato']);
            dato_G.push(JSON.stringify(dato_aux));
            dato_aux=[];    
        }

        localStorage['dato']=dato_G; 
  }

    alert(localStorage['dato']);

location.reload();

if(iteracion==3){
alert("enviando");
    //por medio de ajax recien envio los datos para su registro en la BD

}
    return false;

}
alert(localStorage['dato']);
    nombreUser="";
    passUser="";
  });

});
1
ответ дан 03.12.2019, 17:55

Теги

Похожие вопросы