es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Empuja un objeto devuelto dentro de un arreglo de objetos.

Estoy tratando de guardar la salida de la función setData (un objeto) en un array (state = []), pero no lo puedo descubrir. Aquí está el código:

const sbmt = document.getElementById("myForm");
const elName = document.getElementById("iname");
const elGender = document.getElementById("igender");
const elAge = document.getElementById("iage");
const elForm = document.getElementById("myForm");

const setData = (event) => {
    event.preventDefault();

    let nodeList = document.forms[0].elements;
    let flatNodeList = [...nodeList].map(x => x.value).filter(x => x !== "Submit");

    let objData = {
        userName: flatNodeList[0],
        userGender: flatNodeList[1],
        userAge: flatNodeList[2]
    };

    console.log(objData);

    return objData;
};

let state = [];

const resetForm = () => elForm.reset();

sbmt.addEventListener("submit", setData);
sbmt.addEventListener("submit", resetForm);
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para guardar la salida de la función setData en el array state, puedes llamar a la función dentro del event listener y agregar el objeto devuelto al array state. Aquí tienes el código actualizado:

    const sbmt = document.getElementById("myForm");
    const elName = document.getElementById("iname");
    const elGender = document.getElementById("igender");
    const elAge = document.getElementById("iage");
    const elForm = document.getElementById("myForm");
    
    const setData = (event) => {
        event.preventDefault();
    
        let nodeList = document.forms[0].elements;
        let flatNodeList = [...nodeList].map(x => x.value).filter(x => x !== "Submit");
    
        let objData = {
            userName: flatNodeList[0],
            userGender: flatNodeList[1],
            userAge: flatNodeList[2]
        };
    
        console.log(objData);
    
        return objData;
    };
    
    let state = [];
    
    const resetForm = () => elForm.reset();
    
    sbmt.addEventListener("submit", (event) => {
        const data = setData(event);
        state.push(data);
    });
    
    sbmt.addEventListener("submit", resetForm);
    

    Ten en cuenta que agregamos otra función de devolución de llamada al primer event listener para obtener el objeto devuelto por setData y agregarlo al array state.

Comments are closed.