¿Podría alguien ayudarme a entender esta función y desestructurar un poco mejor?
export default ({ names }) => { const { people: { children = [] } = {} } = names; children.find((child) => child.email); };Entiendo que los nombres se están desestructurando para extraer datos almacenados en objetos para encontrar el primer niño en la matriz de niños que tiene una dirección de correo electrónico. Pero lo que no entiendo es por qué esta función se declara así ({names})? ¿Es porque los nombres son un objeto? Lo siento si esta es una pregunta tonta, pero estoy luchando para entender esto.
Vamos a desglosarlo:
names de propiedad. Luego, la función desestructura el objeto de la siguiente manera ( const { people: { children = [] } = {} } = names; ):
people del argumento de namespeople no existe, toma el valor predeterminado de {} .children (que es una matriz de objetos) de su padre people . A continuación, la lógica de la función con .find()
child de los children de las people de los names del objeto de argumento que tiene una propiedad de email ...return . Desafortunadamente, esa parte falta en su código de función.Entonces, en su fragmento, la función en realidad no hace absolutamente nada, excepto ser innecesariamente complicada: P
Para terminar las cosas. Así es como podría verse su argumento para la función:
const argument = { names: { people: { children: [{ email: "myemail@mail.com", name: "thechildtobefound" }], } } };Y aquí hay una muestra de trabajo para probar:
const func = ({ names }) => { const { people: { children = [] } = {} } = names; return children.find((child) => child.email); }; const argument = { names: { people: { children: [{ email: "myemail@mail.com", name: "thechildtobefound" }], }, }, }; console.log(func(argument));