Tengo debajo del objeto del mapa de la siguiente manera
let monthMap = [ { "key": "Oct 2021", "value": [] }, { "key": "Dec 2021", "value": [ "2021-12-06T08:00:00.000Z", "2021-12-13T08:00:00.000Z", "2021-12-20T08:00:00.000Z", ] }, { "key": "Jan 2022", "value": [ "2022-01-03T08:00:00.000Z", "2022-01-10T08:00:00.000Z", ] }, { "key": "Feb 2022", "value": [ "2022-02-07T08:00:00.000Z", ] } ] Quiero eliminar el par de valores clave de este objeto de mapa cuyo valor es una matriz vacía. por ejemplo, la clave de Oct 2021 tiene un valor vacío. entonces quiero eliminar esa entrada del objeto del mapa.
¿Puede alguien decirme cómo iterar a través de él y eliminar los datos de valor vacíos?
No he iterado a través de un objeto de mapa e intenté algunas formas en línea, pero no pude iterar a través de él.
Formas en que probé:
for (const [key, value] of monthMap.entries()) { console.log(key, value); } for (const [key, value] of Object.entries(monthMap)) { console.log(key, value); }¿Puede alguien decirme cómo iterar y eliminar entradas dinámicamente?
No estoy seguro si estoy usando la estructura correcta de monthMap, pero así es como se muestra en el registro de la consola
usar el método de filtro de matriz
filteredMonthMap = monthMap.filter((month)=>{month.value && month.value.length !== 0;})la condición dentro del método de filtro significa que el valor tiene un valor real y su longitud no es 0. tenga cuidado con el tipo de datos de la propiedad del valor, debe ser una matriz.
Podrías usar el filter para lograr lo mismo. Compruebe la longitud de las matrices de value dentro de la devolución de llamada.
Más información sobre el filter : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Editar:
Si la entrada es un mapa, entonces debe convertir el mapa en pares de valores clave, filtrar el resultado y luego volver a convertirlo en un mapa.
let monthArr = [ { key: "Oct 2021", value: [] }, { key: "Dec 2021", value: [ "2021-12-06T08:00:00.000Z", "2021-12-13T08:00:00.000Z", "2021-12-20T08:00:00.000Z" ] }, { key: "Jan 2022", value: ["2022-01-03T08:00:00.000Z", "2022-01-10T08:00:00.000Z"] }, { key: "Feb 2022", value: ["2022-02-07T08:00:00.000Z"] } ]; const result = monthArr.filter((item) => { const { value } = item; if (value.length) return item; }); console.info(`Month as an array`, result); const inputMap = new Map([ ["Oct 2021", []], [ "Dec 2021", [ "2021-12-06T08:00:00.000Z", "2021-12-13T08:00:00.000Z", "2021-12-20T08:00:00.000Z" ] ], ["Jan 2022", ["2022-01-03T08:00:00.000Z", "2022-01-10T08:00:00.000Z"]], ["Feb 2022", ["2022-02-07T08:00:00.000Z"]] ]); const map1 = new Map([...inputMap].filter(([k, v]) => v.length)); console.info(`Month as a map`, [...map1]); .as-console-wrapper { max-height: 100% !important; top: 0; }Puedes hacerlo usando Array.prototype.filter .
const monthMap = [{key:"Oct 2021",value:[]},{key:"Dec 2021",value:["2021-12-06T08:00:00.000Z","2021-12-13T08:00:00.000Z","2021-12-20T08:00:00.000Z",]},{key:"Jan 2022",value:["2022-01-03T08:00:00.000Z","2022-01-10T08:00:00.000Z",]},{key:"Feb 2022",value:["2022-02-07T08:00:00.000Z"]}], result = monthMap.filter((m) => m.value?.length); console.log(result);