Vi este video 10 min antes de mi primera entrevista de trabajo para desarrollador frontEnd y me pidieron este método, hoy me llamaron para avisarme que me dieron el empleo y vengo a agradecerte Nicolás por haber subido este video tan claro que entendí perfectamente, muchas gracias Nico, llegas a mas gente de la que te imaginas. Saludos desde Argentina!
Gracias por compartir, excelente tutorial!. Un pequeño aporte, como alternativa a dejar un array plano (sin usar reduce, que era el tema del video por cierto) const plano = anidado.flat() // si tiene anidado sólo un nivel de anidado se deja vacío "()" o puede ser (1), pues por defecto es 1 const anidado2 = [1, [2, [3], [4, [5]]]] const plano2 = anidado2.flat(infinity) // forma general, independiente del nivel de anidamiento que tenga el array a aplanar, o bien dejar (3)
You all prolly dont care at all but does any of you know of a trick to get back into an Instagram account? I stupidly forgot the login password. I would love any tips you can offer me!
muchas gracias por explicar este método, actualmente estoy en un bootcamp de Js en México y hasta ahora no había entendido por la manera más complicada en que lo explicaban, ahora ya puedo entender lo que vi en mis clases. gracias saludos
No había entendido .reduce() hasta hoy, muchas gracias Nicolás. Para hacer dinámica la búsqueda indexada ( 8:28 ) utilizé: const propKey = 'nombre'; const indexed = mascotas.reduce((acc, el) => { const { [propKey]: propValue, ...rest } = el; return { ...acc, [propValue]: rest }; }, {}); Pero, como denota @PacoDev, los índices con el mismo valor/nombre serán reasignados en cada ciclo del acumulador. Sigo partiéndome la cabeza para averiguar como indexar con propiedades/claves duplicadas, si es posible, en una línea -soy nuevo en JS.
enserio videos cortos concisos pero sobre todo con mucha informacion bien explicada, en definitiva sos un crack gracias por ayudarnos a cada vez mejorar mas nuestras skills en javaScript
Muy bueno y realmente increíble lo que se puede hacer al mezclar diferentes métodos. También me sirvió para ver como implementar reduce con una fat arrow function, yo lo hacia llamando a una función y no me había ocurrido, son muy útiles ese tipo de funciones. Muchas gracias.
Segunda vez que veo este video, ya entiendo mejor reduce que le aplica al arreglo de objetos... Estoy seguro que cuando lo vea por tercera vez ya lo tendre dominado jeje
Gracias por la explicación , sólo que no me quedó claro el segundo ejemplo de reduce con ...args [el.nombre] : el dónde podría encontrar más información sobre éste ejemplo?
creo que lo entendí, se supone que el "reducer" osea la función que se envía como parámetro en el reduce lo que hace en este ejemplo es en primer lugar recibir un objeto vació que es acc el cual se "spread"tea dentro del objeto que va a retornar la función asi consecutivamente, accede a la propiedad nombre la cual sera el nuevo "indice", ejemplo: {pelusa : {nombre: 'pelusa', edad: 12}, pulga: {nombre:'pulga', edad:10}}. y por ultimo en el console log lo que hace es accesar por notacion de corchetes, indexed['pelusa'] que seria lo mismo a hacer indexed.pelusa
@@juancepeda4793 ya descubrí que es, son miembros de atributos developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Miembros tambien te recomoendo leer destructuración, es muy parecido pero distinto developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Destructuring_assignment
Hola! primero muchas gracias por el video! queria consultarte sobre la sintaxis de los 3 puntos (... acc), que significa o que uso esta dando ahi? lo vi varias veces en otros codigos, busque y no encontre aun una buena explicacion. muchas gracias, saludos!
Mil gracias por crear y compartir. Respecto a lo último, yo había encontrado por otro lado que usar .flat(Infinity) también sirve para dejar totalmente plano el array multidimensional (sim importar la cantidad de dimensiones que este tenga). Dime ¿qué piensas de ello? ¿Es buena o mala práctica? Saludos desde Chile!
Buenas, ¿Cómo se se haría para indexar valores repetidos?. Caso de dos nombres repetidos, edades o tipos, solo muestra el último resultado. Muchas gracias, un saludo.
Que cuca de video Nicolás y muchas gracias por el esfuerzo. Tengo una gran duda y agradezco que alguien o tú pueda explicarme. Entiendo muy bien cómo funciona el reduce en ese ejemplo pero no comprendo lo que hace en ({ ...acc, [el.nombre]: el}) porque según la sintaxis es array.reduce(callback, valor inicial). El callback en general es (acc,el)=>{ } pero para este caso es (acc, el) => ({ ...acc, [el.nombre]: el}). Se está haciendo uso de pipe? es decir, yo entendiería que nuestro callback llama a otra función la cual en sus parámetros arma un objeto; lo que no comprendo es por qué la sintaxis de llaves que inicialmente copia el acumulador y a continuación le indica que la clave sea el nombre y que el valor sea el elemento completo. ¿Qué concepto se usa en este caso? para mi es revelador. Saludos.
devuelve el mismo tipo de objeto, y lo encapsulas con () por ejemplo si fuera un array [ ] en lugar de objeto { } seria -> const numeros= [1,2]; numeros.reduce((acc,el) => ([ ...acc, el + 1 ]), [ ]) devolveria [2,3] un mismo array
Te hago una consulta, que opinas de SWR ? Lo recomendas para la búsqueda de datos ? Solo debería usarlo cuando hay mucha concurrencia ? El problema está cuando abusamos del caché
En este video en puntual (me salté el de map), no entendí parte del motivo por el cual lo hiciste. Porque a mí parecer, las funcionalidades que enseñas, para mi entender (no conocía el reducer ) son herramientas básicas, pero que no todo el mundo conoce, y es allí el motivo por el cual lo enseñas. Pero, es para gente de nivel básico el curso ? Medio? Avanzado ? Ahí dudé, porque yo no conocía la semántica de los 3 puntos que colocaste, y yo, que solo estaba oyendo el curso en un comienzo, tuve que devolverme a ver puntualmente a qué se debían. Eso solamente, se agradece mucho el contenido gratuito!! Saludos !
Hola Nicolás, corrígeme si me equivoco pero la pregunta es porque estoy haciendo esta serie de programación funcional y el nivel? Si fui afortunado y le atiné, quiero mostrarle a otros desarrolladores otra forma de programar donde se es más intuitivo leer el código, es más fácil de razonar, es menos propenso a errores y todo esto con herramientas nativas de JavaScript. Luego de explicar el valor, en esta serie de vídeos en concreto quiero explicar acerca de: Programación funcional Programación tácita (o point free) Funciones puras e impuras Composición de funciones puras Composición de funciones impuras Programación declarativa por sobre imperativa Que son los functors Ejemplos de functors Que son los monads y ejemplos Monoids. Y más cosas sobre teoría de categoría, de esta manera aplicar una base matemática a nuestro código que nos permite escribir de forma más legible y menos propensa a errores.
@@HolaMundoDev muchas gracias por tu respuesta !! Y la verdad quedó muy entusiasmado para los demás cursos. Claramente mi punto no quedo muy claro y me culpo por ello; de igual forma, tu responde muy bien una parte de la duda. Aunque aún me queda algo, y trataré de expresarlo de otra forma y para hacerlo, explicaré mi situación. Soy desarrollador, en la actualidad principalmente enfocado al back-end y para front, minusonde JavaScript solo se enfoca en validaciones. Entonces, estos vídeos, en algunos tramos se me hacen complicado de comprender, ya que algunas cosas de semántica por sobre otras cosas, las he tenido que averiguar y comprender por mi parte. Viendo que el curso comenzó desde lo básico, pensé que estos vídeos estarían enfocados para todo tipo de desarrolladores, pero he visto, que si bien los ejercicios son simples, la forma de escribir código (por ejemplo, los tres puntos que colocaste en este ejemplo ) , a veces, se me hace un poco complicado de comprender en primera instancia y me siento excluido del tipo de desarrolladores a los cuales están orientados tus vídeos. Espero haber sido un poco más claro con esto. Dejo otra dudita, aprovechando tu respuesta. Que piensas de qué se puedan hacer tantas cosas con un lenguaje del tipo script ? No es esto, de alguna forma contrario a un buen performance so es ejecutado del lado del servidor ?
Excelentes preguntas! creo que se merecen un video especial para explicar las fat arrow functions y también el spread operator. Creo que eso sería mejor para explicar que está sucediendo en los videos. Con respecto a la otra duda creo que también merece su propio video. Pero en pocas palabras abre las puertas a que los desarrolladores puedan escribir sobre multiples plataformas (servidores, microcontroladores, cliente, app web, etc) en un mismo lenguaje, por lo que es más "intuitivo". No necesariamente mejor pero es más fácil empezar en esos mundos si solo sabes JS.
Brutal tus videos, muy bien explicados, pero amigo una duda, porque en el minuto 7:43 al momento del console.log(indexed), el ultimo objeto indexado por su nombre es un string, o sea, todos estan sin comillas pero 'Chanchito feliz' si las tiene.
tienes que tomar en cuenta que indexed es un objeto (ya no un array) y cada propiedad de ese objeto es un animal , por tanto indexed['Pelusa'] es equivalente a indexed.Pelusa .
no entiendo algo si estas poniendo [el.nombre] : el haciendo que cree un objeto con el nombre del elemento Para que poner ...acc? si ya estas creando el objeto con lo anterior
en 10:08 dices que acc es un arreglo vacío, entonces cuando escribes acc.concat no habría problema por que .concat es función de un Array pero si le pones .push en vez de .concat arroja un error y dice acc.push is not a function ... sabes por que pasa esto?
weeeeena compa.... estoy aqui aprendiendo javascript, en un codewars.com... y apareció este problema: " dados dos arreglos enteros a, b, ambos de longitud> = 1, cree un programa que devuelva verdadero si la suma de los cuadrados de cada elemento en a es estrictamente mayor que la suma de los cubos de cada elemento en b." , y que muchas soluciones, las hicieron con .reduce. podrías explicar la logica en este problema específico porfa
Hola!. La diferencia es que con el igual se hace una asignación de valor a una variable, pero con los dos puntos está asignando valor a un atributo de un objeto JSON :). Espero te haya ayudado :D
@@rainbow-jw3og ahh..el operador spread... yo decía por lo de cuando pone entre los paréntesis, se genera un objeto ({ ...obj, [ob.clave]: obj }... esta nueva estructura es la que no entiendo.
Hola Juan los ... Generan una copia del objeto. El fin de esto es para que por cada ejecución no se sobreescriba dicho objeto, si no que se haga una copia del objeto anterior y si agregué al mismo la nueva información. Me atrevería a decir que es parecido al método push() como para que lo puedas comprender mejor. {... CopiaObjeto, datos a agregar a esta copia} Saludos desde Medellín.
como puedo obtener el total de los valores de un objecto, el cual sus identificadores son fechas? ejemplo: { "1/1/21": 324, "1/2/21": 234, "1/3/21": 233 } etc, lo que busco es poder obtener una suma total, y otra suma total dependiendo del mes (suponiendo que vayamos teniendo más datos a lo largo del año). Calculo que un reduce me ayudaría, pero no logro obtener la suma :'(
Hola!. Esto es por el cómo está manejando el reductor. En la primera iteración tienes un objeto JSON vacío, entonces toma una copia el objeto y le agrega un nuevo atributo que es el el[el.nombre]: el. Hasta el momento tienes un objeto con un elemento. Ahora, toma una copia del objeto JSON y le agrega otro nuevo atributo y así sucesivamente. En los dos ejemplos anteriores lo que hizo fue sumar los elementos que iteraba, pero este ejemplo.con el JSON, cómo comentó, está más ligado al mundo real. Pero bueno, toma una copia del objeto porque no puede sumar un atributo al JSON (o al menos yo no sé que se puedo :S), Entonces si no toma la copia solo tendrías como resultado un JSON con el último atributo que se metió. Espero no haberte confundido :)
Si alguien me puede ayudar tengo dudas de el segundo ejemplo no entiendo porque le puso un objeto vacio en el valor inicial y donde van el (acc y el) que puso ...acc y [el.nombre] si alguien me pudiera ayudar con eso muchisisimas gracias
Vi este video 10 min antes de mi primera entrevista de trabajo para desarrollador frontEnd y me pidieron este método, hoy me llamaron para avisarme que me dieron el empleo y vengo a agradecerte Nicolás por haber subido este video tan claro que entendí perfectamente, muchas gracias Nico, llegas a mas gente de la que te imaginas. Saludos desde Argentina!
Amo que la explicación sea tan practica c:
que ponente de grande quiero ser así de capo como este men!!!
Gracias por compartir, excelente tutorial!. Un pequeño aporte, como alternativa a dejar un array plano (sin usar reduce, que era el tema del video por cierto)
const plano = anidado.flat() // si tiene anidado sólo un nivel de anidado se deja vacío "()" o puede ser (1), pues por defecto es 1
const anidado2 = [1, [2, [3], [4, [5]]]]
const plano2 = anidado2.flat(infinity) // forma general, independiente del nivel de anidamiento que tenga el array a aplanar, o bien dejar (3)
un poco complicado de entender al principio el método reduce(), pero luego que lo entiendes, te das cuenta que es el mejor método.
You all prolly dont care at all but does any of you know of a trick to get back into an Instagram account?
I stupidly forgot the login password. I would love any tips you can offer me!
Concuerdo con usted estimado.
Lo tuve que ver 3 veces para entender el reduce, menos mal que el video sigue aquí para verlo otras 5 veces mas jajajaja Muy bueno muchas gracias!
muchas gracias por explicar este método, actualmente estoy en un bootcamp de Js en México y hasta ahora no había entendido por la manera más complicada en que lo explicaban, ahora ya puedo entender lo que vi en mis clases. gracias saludos
No se si mires esto,te admiro mucho he aprendido de ti tanto como programacion como valores y veo tu sencilles, muchas gracias Nico!.
Sos el mas grande de todos!! menos del 10 por supuesto, muy clara la explicación. Saludos Gracias
No había entendido .reduce() hasta hoy, muchas gracias Nicolás.
Para hacer dinámica la búsqueda indexada ( 8:28 ) utilizé:
const propKey = 'nombre';
const indexed = mascotas.reduce((acc, el) => {
const { [propKey]: propValue, ...rest } = el;
return { ...acc, [propValue]: rest };
}, {});
Pero, como denota @PacoDev, los índices con el mismo valor/nombre serán reasignados en cada ciclo del acumulador.
Sigo partiéndome la cabeza para averiguar como indexar con propiedades/claves duplicadas, si es posible, en una línea -soy nuevo en JS.
Este es el método que más problemas me da, me cuesta entenderlo pero seguiré mirando el vídeo nuevamente.
que genio, ayudas a muchas personas y explicas muy bien, exitos!
Me ayudaste a entender como funciona el .reduce y con eso pude solucionar un problema de leetcode que me rompia el cerebro, gracias
Eres el mejor. Este video me ayudó filtrar elementos que no necesitaba de un array de objetos
Gracias Nicolas. Todos tus videos me hacen aprender cada dia mas y me han ayudsdo mucho a mejorar.
enserio videos cortos concisos pero sobre todo con mucha informacion bien explicada, en definitiva sos un crack gracias por ayudarnos a cada vez mejorar mas nuestras skills en javaScript
Donde te doy un super mega like? 👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽👍🏽 gracias me estaba partiendo la cabeza
Me quede impresionado con el metodo de indexado, super util
explicamelo jaa
Cada vez amo más este canal, aprendo muchísmo
Muy bueno y realmente increíble lo que se puede hacer al mezclar diferentes métodos. También me sirvió para ver como implementar reduce con una fat arrow function, yo lo hacia llamando a una función y no me había ocurrido, son muy útiles ese tipo de funciones. Muchas gracias.
Me encanta esta sesión, me gustaría que hicieras un video sobre patrones de diseño(los que realmente se utilizan xD) con ejemplos.
tiene un video de patrones, de hecho, es un curso. ahora toca comprarlo!.
Excelente video Nicolas, felicitaciones y mil gracias. 👏🏽
Buenas! Brother estoy fascinado con tus vídeos! Excelente material!
Siempre vuelvo acá cuando repaso : )
este tipo es el puto amo ...mostroooo!!!
Joder, gracias. Esclarecedor, he visto la luz
Excelente explicación.
Genioooo!! me ayudaste a entender lo poderoso que es este metodo!!
Excelente explicación del método reduce!
que crack como explicas todo lo entiendo es como magia
xD yo no entendi ni papa
Muy buena explicación se agradece! Se entiende perfectamente y es de gran utilidad!
Gracias Nicolás, concuerdo contigo es un método genial. Reduce() es como el Kame-Hame-Ha de las funciones :V
Otro level bro! gracias
Eres muy bueno explicando buenos videos y ejemplos muy prácticos 👍🏽✅
Hola, gracias por el video, me gusta como explicas lo que sucede en cada iteracion, es muy util. Saludos.
Excelente video, la explicación es clarita
me han servido muchisimo la serie de videos, me encantaria que a futuro pudieras explicar un poco mas detallado el uso de los "..." gracias!
Eso es de es6, busca spread/rest operator :)
Increible este video. Gracias Nico!
Muchas gracias Nico! Me ayudo mucho.
Simplemente Hermoso!! ( la explicacion) jejej
El canal ha cambiado mucho, deberías hacer un segundo canal con estos bullets de info. Espero que puedas leer este comentario
Bestia una Besita ENSERIO!!! WTF Vine buscando cobre y encontré oro
Gracias por compartir conocimiento, muy profesional tus vídeos,
saludos
Gracias! me alegro que te gusten
Buenísimo, y entendible, Saludos!.
Gracias por el aporte! El video semanal nunca faaalla!
Mas videos asi porfavor 🙏
Saludos compa, muy util el video, muchas gracias, interesante las formas de usar ese metodo reduce()
Gracias ! Me encanta como explicas
Me encanta el teclado blanco de la intro! Si tan solo supiera su marca o modelo o algo...
Eres muy bueno , gracias
grande, Sabino por dejar el rap y enseñarnos a programar
Segunda vez que veo este video, ya entiendo mejor reduce que le aplica al arreglo de objetos...
Estoy seguro que cuando lo vea por tercera vez ya lo tendre dominado jeje
buenisiiimo :D gracias buen hombre!!!
He visto la luz... ¡Gracias!
excelente manera de hacer un array plano, aparte del array.flat()
buena explicacion
excelente video
1:26 comienza
Gracias por la explicación , sólo que no me quedó claro el segundo ejemplo de reduce con ...args [el.nombre] : el dónde podría encontrar más información sobre éste ejemplo?
creo que lo entendí, se supone que el "reducer" osea la función que se envía como parámetro en el reduce lo que hace en este ejemplo es en primer lugar recibir un objeto vació que es acc el cual se "spread"tea dentro del objeto que va a retornar la función asi consecutivamente, accede a la propiedad nombre la cual sera el nuevo "indice", ejemplo: {pelusa : {nombre: 'pelusa', edad: 12}, pulga: {nombre:'pulga', edad:10}}.
y por ultimo en el console log lo que hace es accesar por notacion de corchetes, indexed['pelusa'] que seria lo mismo a hacer indexed.pelusa
@@CscV7 una duda, eso no convierte a indexed en array? por los "[ ]"... pensaria que la manera de acceder sería indexed.pelusa, que tipo de dato es?
si le agregar typeof lo regresa como objeto pero si no me equivoco los arrays son tipo Object...
excelete video
Gracias, este no lo conocía, quedo clarisimo, espero la parte siguiente. Saludos!
hola profe que buen video, genial por aprender esa funcion, su puedes sacar un video de websocket con javascript seriagenial, gracias
hola, una consulta, que tipo de concepto, lógica o syntaxis es -- [el.nombre]:el -- en el objeto que hizo???
tengo la misma duda, pense que eso generaria un array por los [], pero genero un objeto.
@@juancepeda4793 ya descubrí que es, son miembros de atributos developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Miembros tambien te recomoendo leer destructuración, es muy parecido pero distinto developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Destructuring_assignment
@@kuma4824 Mil gracias, ya mismo leo los articulos!
@@kuma4824 Mil gracias!!! Estaba perdido en este punto. Ahora los leeré!.
Hola! primero muchas gracias por el video!
queria consultarte sobre la sintaxis de los 3 puntos (... acc), que significa o que uso esta dando ahi? lo vi varias veces en otros codigos, busque y no encontre aun una buena explicacion.
muchas gracias, saludos!
OPERADOR DE PROPAGACION
Gracias :)
genial
Mil gracias por crear y compartir.
Respecto a lo último, yo había encontrado por otro lado que usar .flat(Infinity) también sirve para dejar totalmente plano el array multidimensional (sim importar la cantidad de dimensiones que este tenga). Dime ¿qué piensas de ello? ¿Es buena o mala práctica?
Saludos desde Chile!
Hola! Una consulta en el ultimo ejemplo se podria usar flat() no??
7:54 por que chanchito feliz se muestra como string y no como objeto?
Buenas, ¿Cómo se se haría para indexar valores repetidos?. Caso de dos nombres repetidos, edades o tipos, solo muestra el último resultado.
Muchas gracias, un saludo.
supongo que tienes que combinarlo con otra funcion, porque reduce solo devuelve un valor
Que cuca de video Nicolás y muchas gracias por el esfuerzo. Tengo una gran duda y agradezco que alguien o tú pueda explicarme. Entiendo muy bien cómo funciona el reduce en ese ejemplo pero no comprendo lo que hace en ({ ...acc, [el.nombre]: el}) porque según la sintaxis es array.reduce(callback, valor inicial). El callback en general es (acc,el)=>{ } pero para este caso es (acc, el) => ({ ...acc, [el.nombre]: el}). Se está haciendo uso de pipe? es decir, yo entendiería que nuestro callback llama a otra función la cual en sus parámetros arma un objeto; lo que no comprendo es por qué la sintaxis de llaves que inicialmente copia el acumulador y a continuación le indica que la clave sea el nombre y que el valor sea el elemento completo. ¿Qué concepto se usa en este caso? para mi es revelador.
Saludos.
devuelve el mismo tipo de objeto, y lo encapsulas con () por ejemplo si fuera un array [ ] en lugar de objeto { } seria -> const numeros= [1,2]; numeros.reduce((acc,el) => ([ ...acc, el + 1 ]), [ ]) devolveria [2,3] un mismo array
Perdón por mi ignorancia, quisiera saber porqué poner ...acc al indexar el array de mascotas:
({...acc,
Potente método
Gracias!!, me sirvió para entender en reduce de php
Podrías haber usado .flat() para crear el arreglo plano
Muy buenos tus videos, te felicito
La idea era implementar flat
Te hago una consulta, que opinas de SWR ? Lo recomendas para la búsqueda de datos ? Solo debería usarlo cuando hay mucha concurrencia ? El problema está cuando abusamos del caché
En este video en puntual (me salté el de map), no entendí parte del motivo por el cual lo hiciste. Porque a mí parecer, las funcionalidades que enseñas, para mi entender (no conocía el reducer ) son herramientas básicas, pero que no todo el mundo conoce, y es allí el motivo por el cual lo enseñas.
Pero, es para gente de nivel básico el curso ? Medio? Avanzado ?
Ahí dudé, porque yo no conocía la semántica de los 3 puntos que colocaste, y yo, que solo estaba oyendo el curso en un comienzo, tuve que devolverme a ver puntualmente a qué se debían.
Eso solamente, se agradece mucho el contenido gratuito!!
Saludos !
Si, hace falta um video corto con esas sintaxis "nuevas" js
Hola Nicolás, corrígeme si me equivoco pero la pregunta es porque estoy haciendo esta serie de programación funcional y el nivel?
Si fui afortunado y le atiné, quiero mostrarle a otros desarrolladores otra forma de programar donde se es más intuitivo leer el código, es más fácil de razonar, es menos propenso a errores y todo esto con herramientas nativas de JavaScript.
Luego de explicar el valor, en esta serie de vídeos en concreto quiero explicar acerca de:
Programación funcional
Programación tácita (o point free)
Funciones puras e impuras
Composición de funciones puras
Composición de funciones impuras
Programación declarativa por sobre imperativa
Que son los functors
Ejemplos de functors
Que son los monads y ejemplos
Monoids.
Y más cosas sobre teoría de categoría, de esta manera aplicar una base matemática a nuestro código que nos permite escribir de forma más legible y menos propensa a errores.
@@HolaMundoDev muchas gracias por tu respuesta !! Y la verdad quedó muy entusiasmado para los demás cursos.
Claramente mi punto no quedo muy claro y me culpo por ello; de igual forma, tu responde muy bien una parte de la duda.
Aunque aún me queda algo, y trataré de expresarlo de otra forma y para hacerlo, explicaré mi situación.
Soy desarrollador, en la actualidad principalmente enfocado al back-end y para front, minusonde JavaScript solo se enfoca en validaciones. Entonces, estos vídeos, en algunos tramos se me hacen complicado de comprender, ya que algunas cosas de semántica por sobre otras cosas, las he tenido que averiguar y comprender por mi parte. Viendo que el curso comenzó desde lo básico, pensé que estos vídeos estarían enfocados para todo tipo de desarrolladores, pero he visto, que si bien los ejercicios son simples, la forma de escribir código (por ejemplo, los tres puntos que colocaste en este ejemplo ) , a veces, se me hace un poco complicado de comprender en primera instancia y me siento excluido del tipo de desarrolladores a los cuales están orientados tus vídeos.
Espero haber sido un poco más claro con esto.
Dejo otra dudita, aprovechando tu respuesta. Que piensas de qué se puedan hacer tantas cosas con un lenguaje del tipo script ? No es esto, de alguna forma contrario a un buen performance so es ejecutado del lado del servidor ?
Excelentes preguntas! creo que se merecen un video especial para explicar las fat arrow functions y también el spread operator. Creo que eso sería mejor para explicar que está sucediendo en los videos.
Con respecto a la otra duda creo que también merece su propio video. Pero en pocas palabras abre las puertas a que los desarrolladores puedan escribir sobre multiples plataformas (servidores, microcontroladores, cliente, app web, etc) en un mismo lenguaje, por lo que es más "intuitivo". No necesariamente mejor pero es más fácil empezar en esos mundos si solo sabes JS.
que plugins usas en el vim para la ayuda?
Muy amena la manera en la impartes la información. podrías subir el código de las lecciones para acompañar haciendo pruebas
Slds dede Colombia
Genio
Brutal tus videos, muy bien explicados, pero amigo una duda, porque en el minuto 7:43 al momento del console.log(indexed), el ultimo objeto indexado por su nombre es un string, o sea, todos estan sin comillas pero 'Chanchito feliz' si las tiene.
Hola! Chanchito feliz es un string con un espacio entremedio, por lo que debe meterse entre comillas para que lo pesque JavaScript.
@@HolaMundoDev Muchas gracias, u r the best ma friend.
Para que complicarse si con un for sencillo se puede hacer todo, hasta tienes mas control si quieres ponerle una logica especial
Para el último ejemplo podría utilizarse el método flat()
equipo
Tengo una pregunta. Por que cuando se imprime indexed['Pelusa'] no devuelve el nombre mas el objeto, sino que devuelve solo el objeto???
tienes que tomar en cuenta que indexed es un objeto (ya no un array) y cada propiedad de ese objeto es un animal , por tanto indexed['Pelusa'] es equivalente a indexed.Pelusa .
Crack
no entiendo algo
si estas poniendo [el.nombre] : el haciendo que cree un objeto con el nombre del elemento
Para que poner ...acc? si ya estas creando el objeto con lo anterior
"pesula" jajaja
en 10:08 dices que acc es un arreglo vacío, entonces cuando escribes acc.concat no habría problema por que .concat es función de un Array pero si le pones .push en vez de .concat arroja un error y dice acc.push is not a function ... sabes por que pasa esto?
🤯
weeeeena compa....
estoy aqui aprendiendo javascript, en un codewars.com...
y apareció este problema: " dados dos arreglos enteros a, b, ambos de longitud> = 1, cree un programa que devuelva verdadero si la suma de los cuadrados de cada elemento en a es estrictamente mayor que la suma de los cubos de cada elemento en b." , y que muchas soluciones, las hicieron con .reduce.
podrías explicar la logica en este problema específico porfa
Muy buen tuto : )
una cosa, prodias explicar [el.nombre]: ??? no por que usas dos puntos y no un igual, que diferencia hay ?
Muchas gracias bro
Hola!. La diferencia es que con el igual se hace una asignación de valor a una variable, pero con los dos puntos está asignando valor a un atributo de un objeto JSON :). Espero te haya ayudado :D
Me perdí en la parte donde pones ...acc y luego la coma. Cómo es eso de que agrega al objeto.
creo que es esto lo que no entiendo porque es un copia jaja developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Spread_operator
@@rainbow-jw3og revisando
@@rainbow-jw3og ahh..el operador spread... yo decía por lo de cuando pone entre los paréntesis, se genera un objeto ({ ...obj, [ob.clave]: obj }... esta nueva estructura es la que no entiendo.
Hola Juan los ... Generan una copia del objeto. El fin de esto es para que por cada ejecución no se sobreescriba dicho objeto, si no que se haga una copia del objeto anterior y si agregué al mismo la nueva información.
Me atrevería a decir que es parecido al método push() como para que lo puedas comprender mejor.
{... CopiaObjeto, datos a agregar a esta copia}
Saludos desde Medellín.
como puedo obtener el total de los valores de un objecto, el cual sus identificadores son fechas? ejemplo: { "1/1/21": 324, "1/2/21": 234, "1/3/21": 233 } etc, lo que busco es poder obtener una suma total, y otra suma total dependiendo del mes (suponiendo que vayamos teniendo más datos a lo largo del año). Calculo que un reduce me ayudaría, pero no logro obtener la suma :'(
¿Alguien me puede explicar porque cuando indexamos nuestro objeto regresamos una copia del acumulador?
Me llevo como dos horas y repetir el video como cinco veces para entender el funcionamiento de reduce
alguien podria decirme ¿porque se hace una copia del acumulador? "...acc" ?
x2
Hola!. Esto es por el cómo está manejando el reductor. En la primera iteración tienes un objeto JSON vacío, entonces toma una copia el objeto y le agrega un nuevo atributo que es el el[el.nombre]: el. Hasta el momento tienes un objeto con un elemento. Ahora, toma una copia del objeto JSON y le agrega otro nuevo atributo y así sucesivamente.
En los dos ejemplos anteriores lo que hizo fue sumar los elementos que iteraba, pero este ejemplo.con el JSON, cómo comentó, está más ligado al mundo real.
Pero bueno, toma una copia del objeto porque no puede sumar un atributo al JSON (o al menos yo no sé que se puedo :S), Entonces si no toma la copia solo tendrías como resultado un JSON con el último atributo que se metió.
Espero no haberte confundido :)
Clarísimo.
Siempre que tengo que usar reduce y no recuerdo la sintaxis correctamente vengo a este vídeo.
Si alguien me puede ayudar tengo dudas de el segundo ejemplo no entiendo porque le puso un objeto vacio en el valor inicial y donde van el (acc y el) que puso ...acc y [el.nombre] si alguien me pudiera ayudar con eso muchisisimas gracias
Buenas! Alguien sería tan amable de explicarme que hace exactamente el spread operator?? Que es lo que copia?
De hecho, si alguien me puede explicar en detalle el const indexed se lo agradeceria