Quiero recibir una sola matriz de objetos y devolver solo los valores no nulos en las matrices de objetos.
Sin embargo, el método que implementé contiene propiedades no nulas en una matriz y las devuelve como una matriz. ¿Cómo puedo hacerlo más fácil?
Quiero que se devuelva como un objeto, no como una matriz.
const arr = [{ text01 : 'name', text02 : 'email@gmail.com', text03 : '010-1234-5678', text04 : 'adress1', text05 : 'adress2', text06 : null, text07 : null, text08 : null, }, { text01 : 'name1', text02 : 'email2@gmail.com', text03 : '010-1255-5148', text04 : 'adress3', text05 : 'adress4', text06 : null, text07 : null, text08 : null, }] getDataArr(arr) { arr.forEach(item => { const aaa = []; for (let key in item) { if (item[key] !== null) { const value = item[key]; aaa.push({ key, value }); } } console.log(aaa); }); // Get the value as const arr = [{ text01 : 'name', text02 : 'email@gmail.com', text03 : '010-1234-5678', text04 : 'adress1', text05 : 'adress2', }, { text01 : 'name1', text02 : 'email2@gmail.com', text03 : '010-1255-5148', text04 : 'adress3', text05 : 'adress4', }] },Puede filtrar objetos vacíos, valores indefinidos y nulos de una matriz de objetos como este:
const data = [ {name: "joe", age:99}, {name: "jack", age:8}, undefined, {name: "lola", age:54}, {}, null ] function getValidArray(arr){ return arr.filter(obj=> { if(!!obj && typeof obj === "object"){ return Object.keys(obj).length > 0 } return !!obj }) } console.log(getValidArray(data))EDITAR:
puede lograr el resultado deseado de su hilo actualizado de esta manera:
const arr = [{ text01 : 'name', text02 : 'email@gmail.com', text03 : '010-1234-5678', text04 : 'adress1', text05 : 'adress2', text06 : null, text07 : null, text08 : null, }, { text01 : 'name1', text02 : 'email2@gmail.com', text03 : '010-1255-5148', text04 : 'adress3', text05 : 'adress4', text06 : null, text07 : null, text08 : null, }] function removeNullEntries(arr){ return arr.map(obj=> { const entries = Object.entries(obj) const validEntries = entries.filter(([key, value])=> !!value) return Object.fromEntries(validEntries) }) } console.log(removeNullEntries(arr))Puede lograr fácilmente el resultado usando el filter y el map como una sola línea:
arr.map((obj) => Object.fromEntries(Object.entries(obj).filter(([k, v]) => v !== null)) ); const arr = [ { text01: 'name', text02: 'email@gmail.com', text03: '010-1234-5678', text04: 'adress1', text05: 'adress2', text06: null, text07: null, text08: null, }, { text01: 'name1', text02: 'email2@gmail.com', text03: '010-1255-5148', text04: 'adress3', text05: 'adress4', text06: null, text07: null, text08: null, }, ]; const result = arr.map((obj) => Object.fromEntries(Object.entries(obj).filter(([k, v]) => v !== null))); console.log(result); /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }