Tengo una matriz de matrices de objetos y una de las fechas está vacía, me gustaría eliminar esa fecha vacía.
const arr = [ { "2022-03-10": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Consulta General", "read": false } ], "2022-03-26": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Follow Up", "read": false } ], "2022-03-27": [], "2022-03-31": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Valoraciones Funcionales", "read": false } ] } ];lo que he probado
list.push(doc.data()); var filtered = list.filter(function (el) { return el != " "; });Me gustaría mantener la misma matriz, solo que sin el elemento "2022-03-27".
Además, si también es posible filtrar directamente desde doc.data() sin tener que hacer list.push, eso sería mucho mejor.
Array#map , itere sobre la matrizObject#entries , obtenga la lista de entradas para el objeto actualArray#filter , filtre las entradas cuyo valor es una matriz vacíaObject#fromEntries , devuelve el objeto actual que contiene las entradas filtradas const arr = [ { "2022-03-10": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Consulta General", "read": false } ], "2022-03-26": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Follow Up", "read": false } ], "2022-03-27": [], "2022-03-31": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Valoraciones Funcionales", "read": false } ] } ]; const filtered = arr.map(obj => Object.fromEntries( Object.entries(obj).filter(([key, value]) => value.length > 0) ) ); console.log(filtered);Parece que necesita revisar la estructura de datos. Reestructuré su código a un formato convencional. Espero que sea lo que quiere hacer. si no, déjame un comentario y lo recodificaré para ti.
const result = [ { "2022-03-10": [], "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Consulta General", "read": false, }, { "2022-03-26": [], "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Follow Up", "read": false, }, { "2022-03-27": [] }, { "2022-03-31": [], "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Valoraciones Funcionales", "read": false, }, ]; const removeEmpty = result.filter(oneObj => Object.values(oneObj).length > 1); console.log(removeEmpty)Puede usar delete para eliminar las partes del objeto que tienen una matriz vacía. Esto cambia la matriz original.
const arr = [{ "2022-03-10": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Consulta General", "read": false } ], "2022-03-26": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Follow Up", "read": false } ], "2022-03-27": [], "2022-03-31": [ { "Age": "31", "Last": "Craig", "Name": "Carlos", "Time": "11:00am - 12:00pm", "Type": "Valoraciones Funcionales", "read": false } ] }]; arr.forEach(e => Object.entries(e).forEach(([key,value]) => value.length || delete e[key]) ); console.log( arr );