GoConqr has a new look! Let us know what you think.

Module 4 of 5 · Text

Vaciar Objetos y funcionamiento de función reduce()

Ezequiel del Río

const clean = (obj) => Object.entries(obj).reduce((acum, [key, value]) => (value == null ? acum : (acum[key] = value, acum)), {});

Object.entries() devuelve una matriz de pares propios de una propiedad enumerable [key, value] de un objeto dado, en el mismo orden que es proporcionado por for...in (La diferencia es que un bucle for-in enumera las propiedades en la cadena de prototipos).

const persona = {nombre: 'Roberto', apellido: 'Fernández', profesión: null, apodo:'', hijos: undefined};

Object.entries(persona) --> [
                                                     [ 'nombre', 'Roberto' ],
                                                     [ 'apellido', 'Fernández' ],
                                                     [ 'profesión', null ],
                                                     [ 'apodo', '' ],
                                                     [ 'hijos', undefined ]
                                                   ]

reduce() ejecuta una función reductora sobre cada elemento de un array, devolviendo como resultado un único valor.

const array1 = [1, 2, 3, 4];

const initialValue = 7;
const sumWithInitial = array1.reduce((acumulador, currentValue) => acumulador+ currentValue, initialValue
);  ---> // 17  --> 7+1+2+3+4.

Sin initial value --> // 10 --> 1+2+3+4

initialValue(Opcional): Un valor a usar como primer argumento en la primera llamada de la función callback. Si no se proporciona el valorInicial, el primer elemento del array será utilizado y saltado. Llamando a reduce() sobre un array vacío sin un valorInicial lanzará un TypeError.

La primera vez que se llama la función, acumulador y valorActual pueden tener uno de dos valores. Si se proveyó un valorInicial al llamar a reduce, entonces acumulador será igual al valorInicial y valorActual será igual al primer elemento del array. Si no se proveyó un valorInicial, entonces acumulador será igual al primer valor en el array y valorActual será el segundo.

La función clean devuelve un objeto donde no se guarda los elementos nulos, pero se podría añadir a la condición otros atributos con otros valores:  value === '' || value === null || value === undefined;

reduce((acum, [key, value]) La función reduce recibe dos argumentos: acum toma el valor del initialValue {} --> que Es un objeto vacío. y el primer elemento del array que hemos creado con Object.entries(persona) --> ['nombre', 'Roberto' ],

(value == null ? acum : (acum[key] = value, acum)) La función reduce evalua el valor de value, y si es null, devuelve el objeto acum y si no lo es, crea la propiedad en acum a través de acum[key] = value y devuelve el objeto acum.

CURIOSIDAD: 
Esta forma de retornar retornar la información (acum[key] = value, acum)) tiene como propiedad que primero crea la propiedad en acum con acum[key] y por otra parte retorna el objeto acum.

 

Instructions

You must submit an attempt for this quiz to progress. You can submit it after the last question.

Go to the chosen module

Feedback

What is it about?

What do you think of the new look?

How do you like it?