Estoy atrapado en este problema extraño en el que me cuesta entender lo que está pasando. Cuando se hace clic en un botón, llama a la función onSubmit . Lo que debería hacer la función onSubmit es stringify es el objeto para JSON, sin embargo, para mí esto no sucede. El resultado que obtengo cuando console.log(JSON.stringify(obj)); es [[]] . Cuando console.log(obj); Puedo ver el objeto.
No pude replicar el mismo problema en playcode.io y codesandbox.io
async function onSubmit() { let l = []; l["Channel"] = undefined; l["MetricsData"] = [ { id: 1, name: "CPA", year: "" }, { id: 2, name: "Average Gift", year: "" }, { id: 3, name: "Average Gift Upgrade %", year: "" } ]; let obj = []; l.Channel = 1; obj.push(l); console.log(obj); console.log(JSON.stringify(obj)); //[[]] }Como otros han señalado en los comentarios, está creando una instancia de l como una matriz y luego intenta completar las claves con nombre ( Channel , Metricsdata ).
Nota : técnicamente, las matrices son objetos , pero son objetos especiales (sus claves están destinadas a ser numéricas y también tienen algunos accesorios y métodos adicionales, específicos de las matrices, por ejemplo: length , pop , push , slice , etc.). .). Use el enlace de arriba para leer más sobre las matrices.
Lo que debe hacer es usar l como objeto (por ejemplo: {} ):
const l = { Channel: 1, MetricsData: [ { id: 1, name: "CPA", year: "" }, { id: 2, name: "Average Gift", year: "" }, { id: 3, name: "Average Gift Upgrade %", year: "" } ] }; // Uncomment any of the following: // console.log('object:', l); // console.log('stringified object:', JSON.stringify(l)); const items = []; items.push(l); // console.log('items:', items); // console.log('first item:', items[0]); console.log(JSON.stringify(items));