¡No uses filter, ni find, ni un bucle normal para hacer esto en JavaScript!

Sdílet
Vložit
  • čas přidán 15. 12. 2022
  • Usa este método para encontrar si un elemento de un Array cumple una condición.
    Es la forma correcta de hacerlo, la más corta y fácil de leer y mantener.
    ¡Así mejorará tu código! 👍
  • Věda a technologie

Komentáře • 173

  • @cesaramirezfr
    @cesaramirezfr Před rokem +202

    Cada que usas return y llaves en arrow functions con una sola línea muere un pandita bebé 😢

    • @aquirozca
      @aquirozca Před rokem +24

      Es para que se explique mejor, no todos conocen como funcionan las arrow functions

    • @Fran-wk1wj
      @Fran-wk1wj Před rokem

      usar arrow functions esta mal?

    • @aquirozca
      @aquirozca Před rokem +1

      @@Fran-wk1wj depende, de qué pues primero debes entender que no es lo mismo una "function expression" que una "function declaration", busca la diferencia y verás, no es que "esté mal", solo que debes saber el scope que necesitas.

    • @AntonioMirabalG
      @AntonioMirabalG Před rokem +3

      ​@@Fran-wk1wj pues es que directamente las arrow functions son funciones anonimas a diferencia de las funciones declaradas

    • @8koi245
      @8koi245 Před rokem

      Nooooooo!!!! :c

  • @gpcar7156
    @gpcar7156 Před rokem +159

    update: el .find seria lo mas directo (sólo si necesitas el objeto), el some te da sólo un boolean, genial.

    • @darwinspace
      @darwinspace Před rokem

      Eres tonto.
      Al principio especifica que el problema está basado en el propio hecho en la pregunta de ¿hay alguna persona mayor de 18 años? cuya respuesta es evidente que tiene que ser condicional.
      update: eres tonto.

    • @CLtech05
      @CLtech05 Před rokem +1

      venia a decir esto

    • @MsElsospechoso28
      @MsElsospechoso28 Před 11 měsíci

      Gracias. enseñame mas

    • @Elegido4327
      @Elegido4327 Před 8 měsíci

      Pero me devuelve todas los values que sean mayor ó igual a , por ej, 17?, me devuelve memxd y milfy con sus values?

  • @starbug5681
    @starbug5681 Před rokem +24

    pero eso es para saber si hay alguien mayor de 18, pero no te entrega los datos de las personas de mayores de 18 años, entonces para el segundo escenario donde requieres los datos de esas personas para hacer x cosas, no se usa el some, se usaría el filter

  • @alberFunes478
    @alberFunes478 Před rokem +3

    El some es muy útil si necesitas filtrar un array de objetos

  • @nelsonfercher7768
    @nelsonfercher7768 Před rokem +7

    Amo esto de la programación 😍😍

  • @josegarrido2905
    @josegarrido2905 Před rokem

    Ohh, buena muchas gracias midu por tus contenidos de mucha calidad 👏

    • @midudev
      @midudev  Před rokem

      Un placer, Jose! Ojalá os ayude! 🤗

  • @danabaiardi5452
    @danabaiardi5452 Před rokem +12

    😁 some y every. Un videito con diferencias! Siempre tengo que ir a la docu porque no me acuerdo la diferencia je

    • @midudev
      @midudev  Před rokem +34

      Some, te devuelve true si algún elemento pasa la condición.
      Every, te devuelve true si todos los elementos pasan la condición.
      Muy útiles los dos.

  • @Max29xD
    @Max29xD Před rokem +1

    Genial. Me ahorraste mucho código

  • @carlosbarranco7319
    @carlosbarranco7319 Před rokem

    Trucazo. Trucazo. Si señor. 👌

  • @ronnydamianrodrigueznole2818

    Me gustaría adquirir un curso de Javascript de este profesor

  • @marcosalejandropadilladorta

    Que editor de código usas?

  • @Mikhail_13_
    @Mikhail_13_ Před rokem

    con un simple for puedes guardar los encontrados en un array y mostrarlos, es lo mas sencillo, la misma cantidad de lineas de codigo

  • @ronaldchacon6891
    @ronaldchacon6891 Před rokem

    y se podria usar el similar en otros lenguajes??

  • @lucianocozzi6311
    @lucianocozzi6311 Před rokem

    Quiero guardarloo!!!

  • @CodeMaker23
    @CodeMaker23 Před rokem

    esto no funcionaria si necesito retornar ese objeto que cumple la condicion? disculpa, pregunto desde mi desconocimiento sobre el método

  • @edwinsantana6540
    @edwinsantana6540 Před 11 měsíci

    Wao😮

  • @carlitosandres
    @carlitosandres Před rokem +1

    findIndex es bueno. Si encuentra algo, ya sabes como traer el objecto que necesitas, e imagino que no hay que escribir mucho más que con some.

    • @watpo__5440
      @watpo__5440 Před 6 měsíci

      Para eso simplemente usarías find.

  • @dgonx017_
    @dgonx017_ Před rokem

    teamo tio

  • @ivanLee2372
    @ivanLee2372 Před rokem +8

    de que sirve saber si un objeto cumple x condición en un arreglo, si casi en la mayoría de los casos necesitas dicho objeto, no si, un objeto de todos los del arreglo cumple X condición...
    es como ¿hay alguno que cumpla X condicion? aplicas arr.some(...) si la respuesta es true llegas a la siguiente pregunta ¿quien? que haces en ese caso? claramente filter es la respuesta 🤯

    • @vanhellsing3029
      @vanhellsing3029 Před rokem +4

      Es obvio que depende de cada situación

    • @JenniferBeuses
      @JenniferBeuses Před rokem +5

      Exacto, es dependiendo de la condición, por lo menos me ha tocado saber solo si existe o no una coincidencia para hacer algo en la vista, no para cambiarlo ni usar ese objeto.

    • @ivanLee2372
      @ivanLee2372 Před rokem

      a lo que voy, es que son muy pocas ocasiones donde se ocupa some, si es que la he ocupando serian 1 o 2 veces de todo el tiempo que llevo desarrollando, es una funcionalidad súper situacional...

    • @ramonzelaya5537
      @ramonzelaya5537 Před rokem +1

      Ya entiendo, igual debe ser útil, en alguna situación especifica

    • @midudev
      @midudev  Před rokem +6

      Será en la mayoría de casos donde trabajas. El uso de some/every es bastante extendido y vendría a sustituir muchos usos de los bucles for y continue/break.
      Esto no quiere decir que filter no se use. Lo que quiere decir es que no uses filter cuando tienes que usar some.

  • @juancaos01
    @juancaos01 Před rokem

    Graciasssss

  • @obem12
    @obem12 Před rokem

    3ee como haces el efecto neon?

  • @JoseCarlos-zg8bj
    @JoseCarlos-zg8bj Před rokem

    Tipo el lamda de python? Cierto?

  • @TheLucska
    @TheLucska Před rokem +1

    Que tema esta usando?😮

    • @Alex-ni6ed
      @Alex-ni6ed Před 10 měsíci +1

      Segun el capture que le pase a la IA me dice que el tema se parece a "Solarized Dark"... verificalo bro

  • @malekir1241
    @malekir1241 Před rokem +3

    Que tema es ese y como lo pongo ?

  • @The_Space24
    @The_Space24 Před rokem

    Alguien sabe cómo se llama el tema que tiene de VScode?

  • @saulpineda9761
    @saulpineda9761 Před měsícem

    Se me hace que es como find solo que este te devuelve un objeto en cuestión que coincida en lugar de decirte que es true si lo encuentra.

  • @joseysusamigos
    @joseysusamigos Před rokem

    exactamente

  • @canabal7
    @canabal7 Před rokem

    Soy extremadamente novato y quiero aprender, así q me surge una duda y espero q no se burlen por lo básica jajajaja como haces para que el console.log se vaya actualizando automáticamente?

  • @xuloIsaias
    @xuloIsaias Před rokem +4

    Ok pero específicamente en que sentido mejora?
    En menos líneas de código o por mejor performance?

    • @midudev
      @midudev  Před rokem +6

      Menos código y menos iteraciones, por lo que mejor rendimiento.

    • @xuloIsaias
      @xuloIsaias Před rokem +2

      @@midudev oh wow, graciasss crack

    • @Galder6
      @Galder6 Před rokem +7

      Pero no nos flipemos, el array hay que recorrerlo si o sí. Some() lo que te ahorra es un break, pero a bajo nivel el rendimiento es muy parecido al for tradicional.

    • @cristianjuarez1086
      @cristianjuarez1086 Před rokem +3

      @@xuloIsaias nada de eso, solo mejora porque es la manera que corresponde usar, el some esta para eso. Es absurdo que mejore significativamente el rendimiento por una o dos micro instrucciones menos. Es mas, por simple azar podria hasta empeorar, pero es irrelevante porque es mas legible, correcto y mantenible

    • @cristianjuarez1086
      @cristianjuarez1086 Před rokem +1

      @@xuloIsaias PD: este tipo te vende eso del rendimiento pero te aseguro que el some internamente utiliza la interacion

  • @joonyyploify
    @joonyyploify Před rokem

    Como hace para que dentro del visual, en la zona de la terminal le retorne la logica de lo que escribe en tiempo real? busque en todas partes y no es :(

  • @Masitx99
    @Masitx99 Před rokem +2

    Como haces para tener la sintaxis asi de colorida?

  • @Daniel-Perdomo
    @Daniel-Perdomo Před rokem

    Que bonitos colores de letras ,como se llama ese estilo

    • @Alex-ni6ed
      @Alex-ni6ed Před 10 měsíci

      Hice un capture y se lo pase a la IA y me dice que el tema se parece a "Solarized Dark"... verificalo

  • @ivan_fadu
    @ivan_fadu Před rokem +3

    Me encanta el Tema que usas. Me podrás decir cual es? Gracias por el video!

  • @juandavidpedrazamorales1560

    como se llama la extencion de tu tema del visual ???

  • @CodeMaker23
    @CodeMaker23 Před rokem

    Y si quiero devolver la propiedad y el valor de la propiedad de uno de esos objetos? Y no el objeto completo?

    • @SekaiNewW7
      @SekaiNewW7 Před rokem

      Pues mejor el objeto completo y haces las sgtes validaciones en las sgtes líneas recuerda código fácil de leer también es bueno.

  • @luchorap85
    @luchorap85 Před rokem

    y si son mas de 1

  • @KlaudiusL
    @KlaudiusL Před rokem +10

    Es exactamente los mismo .. internamente el some hace una iteración con un if dentro. Que pensabás, que lo encontraba magicamente?

    • @roberthgnz
      @roberthgnz Před rokem

      Obviamente es magia

    • @Imhest
      @Imhest Před rokem +6

      No exactamente. El filter iteraría todos los elementos del array. El some pararía la ejecución del código la primera vez que se cumpla la condición y returns true

    • @jorgejorge8878
      @jorgejorge8878 Před rokem +1

      Claramente, alquimia

    • @biker6600
      @biker6600 Před rokem

      es mas facil de leer y punto, saludame a la familia

    • @watpo__5440
      @watpo__5440 Před 6 měsíci

      Tenés mucha falta de compresión.

  • @fedeloc28
    @fedeloc28 Před rokem

    ¿Si lo hago en C, el trabajo es mío?

  • @tigreonice2339
    @tigreonice2339 Před rokem +1

    Para buscarlo no lo hace iterando?

    • @midudev
      @midudev  Před rokem +3

      find y some iteran hasta el primero que cumple la condición.
      filter itera sobre todos los elementos siempre.

    • @tigreonice2339
      @tigreonice2339 Před rokem

      @@midudev ahhh ok. Gracias compa

  • @danivalldosera2523
    @danivalldosera2523 Před rokem +1

    Para que sea mayor de edad tendría que ser >= 18 (18 ya se considera mayor de edad)

    • @carlosrivera3910
      @carlosrivera3910 Před rokem

      eso en tu pais, en U.S.A para ser mayor de edad se necesita que sea mayor de 21 años xd

    • @dayan7359
      @dayan7359 Před rokem

      @@carlosrivera3910 no aportas nada, obviamente Dani está hablando de un escenario donde la mayoría de edad sea los 18

  • @josedavidmontes6075
    @josedavidmontes6075 Před rokem

    ufff

  • @donovana8108
    @donovana8108 Před rokem

    Excelente!. Cuáles extensiones usas en vs?

  • @arturodimas6988
    @arturodimas6988 Před rokem

    Y para saber cuál es la persona que cumple la condición?

  • @maurogoyeneche
    @maurogoyeneche Před rokem

    Si en tu array hay 2 midu de 16 años.
    Como eliminas el clone de midu? 😊

  • @lestherxm
    @lestherxm Před rokem +1

    Pero y si deseo obtener la data de todos los que cumplen esa condición? Esa función no me parece tan útil

    • @jotasenator
      @jotasenator Před rokem

      para eso usa find, pero a veces solo te hace falta saber si cumple la condicion

    • @aquirozca
      @aquirozca Před rokem

      Cuando entiendas que es mejor ser lo más declarativo posible y no tanto las línea de código verás que tienen mucho sentido usar some.
      existeMayor === personas.find(...
      existeMayor === personas.some(...

  • @ramonzelaya5537
    @ramonzelaya5537 Před rokem +1

    Y luego como lo obtengo?

    • @midudev
      @midudev  Před rokem +1

      Devuelve el booleano de si lo ha encontrado o no.

    • @ramonzelaya5537
      @ramonzelaya5537 Před rokem

      @@midudev Excelente! 👌

  • @KikoMovilla
    @KikoMovilla Před rokem

    Yo a fuerza bruta lo haría así
    const validarEdad = (input)=>{
    let response = false;
    input.forEach(persona=>{
    if(persona.edad > 18){
    response = true;
    break;
    }
    });
    return response;
    }
    De esta manera se evitaría iterar en todos los objetos, la única manera de que iterara en todos los objetos sería que nunca se cumpliera la condición.

    • @KikoMovilla
      @KikoMovilla Před rokem

      Y si con antelación se que podrían existir duplicados convertiría el array en un set para evitar duplicados.

    • @KikoMovilla
      @KikoMovilla Před rokem

      Claro, la fuerza bruta consume más líneas, pero puede tener mejor escalabilidad. Si en un futuro necesito implementar algún callback, se lo paso como argumento. Si requiero los objetos le devuelvo un array. Etcétera

    • @CristalNuke
      @CristalNuke Před rokem

      el some itera hasta encontrar el primer elemento que cumpla la condición... no itera sobre todos a menos que ninguno la cumpla o justo el último sea el que la cumpla.

    • @MaximoPower2024
      @MaximoPower2024 Před rokem

      ​@@KikoMovilla YAGNI

  • @lidwinguillermogascagarcia439

    Estoy atorado en un proyecto mio, tengo dos arrays, uno con ingredientes nesesario para una receta, y otro con ingredientes qué tengo en mi casa, solo necesito una manera de comprobar si el arrray con ingredientes en casa cumple con los ingredientes de la receta.
    si es true: que muestre imagen de receta posible.
    si es false: print "no puedes confinar nada"
    Alguna idea porfavor?
    He buscado y encontré una manera donde cuenta las palabras repetidas de un array del otro, y si la cantidad de palabras repetidas es igual a la cantidad de *arrayReceta.lenght* entonces mostrar imagen, pero sinceramente no me gusta.
    Estoy aprendiendo solo, con ayuda de Internet y me siento impotente de no poder encontrar lo que busco, o crearlo yo mismo.

    • @sebabenitez4681
      @sebabenitez4681 Před rokem

      Te doy vuelta la validación.
      Podrías verlo como:
      "si alguno de los ingredientes necesarios para la receta
      NO está entre los ingredientes disponibles en casa,
      NO puedo cocinar la receta"

    • @AtonicSeven
      @AtonicSeven Před rokem

      Un for al primer array, con otro for donde comparas, cada vez que encuentres un ingrediente sumas 1 a un contador, cuando el contador sea igual a arrayIngredientes.lenth, , podrás cocinar, sino te faltan ingredientes, el que no encuentres lo puedes sacar a otro array o sacarlo por consola

  • @EpicAirOfficial
    @EpicAirOfficial Před rokem

    ¿Alguien mas se dio cuenta que puso "persona" y el const era "personas"?
    (se que es mejor para el guion y que capaz no fue error pero jajaj lo tenia que decir)

  • @KAU50000
    @KAU50000 Před rokem

    No es necesario que se ponga return.

    • @midudev
      @midudev  Před rokem

      Claro que sí, porque estamos usando las llaves.
      No estoy usando el return implícito, además, porque en un vídeo tan corto hay gente que no lo entendería.

  • @itsme-freeman
    @itsme-freeman Před rokem

    Sigue siendo O(n), que no?

  • @elpanamoi
    @elpanamoi Před rokem

    some igual itera sobre todo los objetos, lo unico es que es mas facil de leer.

    • @midudev
      @midudev  Před rokem +3

      No, no itera sobre todos los objetos. Itera hasta que encuentra el primero que cumple la condición.
      const n = [1, 2, 3, 4, 5]
      n.some(n => {
      console.log(n)
      return n % 2 === 0
      })
      En la consola verás:
      1
      2

  • @santi100a
    @santi100a Před rokem +1

    Mejor es ```persona => persona.age >= 18```.

  • @diegoarturozamoracruz1380

    creo que las 3 propuestas que mostraste son iguales
    porque las 3 tienen complejidad O(n)

    • @eliantemes730
      @eliantemes730 Před rokem

      A lo sumo tendrás que considerarlo en un caso muy muy puntual, some devuelve un booleano no el objeto, puede ser útil si solo tenes que saber si un objeto de un conjunto cumple la condición o no, en cambio con filter tendrias el overhead al pedo del objeto que trajo + tener que revisar si trajo un objeto con mas lineas de codiho

  • @ElTitoFry
    @ElTitoFry Před rokem

    Por qué no un do while y ya está? XD

    • @midudev
      @midudev  Před rokem

      O lenguaje ensamblado!

    • @ElTitoFry
      @ElTitoFry Před rokem +1

      @@midudev ?

    • @jorgecortez285
      @jorgecortez285 Před rokem

      @@ElTitoFry ensamblador es de bajo nivel y de codigo bastante largo para hacer una operacion simple, por eso lo compara con tu solucion

    • @ElTitoFry
      @ElTitoFry Před rokem

      @@jorgecortez285 Sé perfectamente lo que es el lenguaje ensamblador, lo que no sé es a lo que viene la comparación cuando un do while es nativo y hace exactamente lo mismo de una manera súper simple y encima te permite gestionar la variable para poder usarla después. La solución que él expone no es útil en caso de necesitar operar con el elemento encontrado.

  • @add_code
    @add_code Před rokem

    Hola Midu creo que el return esta demás, pero confirmo que es una maravilla el some y el every

    • @midudev
      @midudev  Před rokem

      No, el return no está de más. :) Otra cosa es que quitemos las llaves y hagamos el return implícito, que no es el caso.

  • @marcialabrahantes3369

    hay multiples formas de hacer esto, y no necesariamente esta es la mejor.
    normalmente hay muchas transformaciones que terminan en las funciones que "reducen" a un boolean, pero nadie te va a sacar puntos por un nivel de optimización tan bajo mientras que no tengas como 10 nested loops
    lo digo de experiencia en los peer reviews...

  • @ftwtf
    @ftwtf Před rokem +1

    en Java a este método se le llama "anyMatch" no entiendo porqué les pareció adecuado llamarlo "some"

  • @rbnccv
    @rbnccv Před rokem

    no es más útil devolver la persona(s) mayor de 18?

  • @jhonatansantofimio3764

    como regresari el nombre de la persona mayor de 18 años

  • @tiagosantana450
    @tiagosantana450 Před rokem

    Lo explicaste mal amigo.
    El método más adecuado en este caso sería filter, ya que verifica y devuelve un nuevo array con los valores encontrados.
    El método some, por otro lado, comprueba si al menos un elemento cumple la condición, devolviendo un valor booleano.

  • @michaelflores146
    @michaelflores146 Před rokem

    array.find(value => !!(condition));

  • @camilopimentel7471
    @camilopimentel7471 Před rokem

    Pero no sé puede usar el .includes? Nos retorna un booleano.

    • @roberthgnz
      @roberthgnz Před rokem +1

      En este caso no ya que se está buscando en un array de objectos, el includes solo recibe como argumento un valor no una condición

  • @mochellalle3524
    @mochellalle3524 Před rokem +1

    Y si quiero saber quien tiene más de 18?

    • @midudev
      @midudev  Před rokem +8

      Para encontrar todos los que son mayores de 18. -> filter.
      Para encontrar el primero que es mayor de 18. -> find.
      Para saber si todos son mayores de 18. -> every.
      Para saber si alguno es mayor de 18. -> some.

    • @mochellalle3524
      @mochellalle3524 Před rokem

      @@midudev ok gracias amigo

  • @willianpabon7550
    @willianpabon7550 Před 5 měsíci

    Esa forma de hablar. modo tiktoker activado XD

  • @orl123124
    @orl123124 Před rokem +1

    const r= (state = [0,1,2,3,4,5], action) => {
    switch(action.type) {
    case 'REMOVE_ITEM':
    return state.filter((_, index) => index !== action.index);
    default:
    return state;
    }
    };
    The filter() method creates a new array filled with elements that pass a test provided by a function.
    The filter() method does not execute the function for empty elements.
    The filter() method does not change the original array.

  • @coldcoder23
    @coldcoder23 Před rokem +1

    Sin los colores neon no funciona

    • @midudev
      @midudev  Před rokem

      Efectivamente, es una dependencia de JavaScript.

  • @JohannGarrido
    @JohannGarrido Před rokem

    A ver, quién con sentido común usa la primera alternativa??? Dios mío

  • @CarlosHerreraJugovie
    @CarlosHerreraJugovie Před rokem

    Lodash?

  • @3DPTR
    @3DPTR Před rokem

    Como odio la palabra bucle

  • @fabyxs3192
    @fabyxs3192 Před 2 měsíci

    Pero no podria ser
    const mayores = personas.filter(persona => persona.age > 18)
    Y devolveria un array solo con milfy

  • @mauriciocruzlopez4526
    @mauriciocruzlopez4526 Před 11 měsíci

    esta bueno, es bastante similar al método every aunque la pregunta sería ¿Todas las personas son mayor de edad?

  • @alexurbina7072
    @alexurbina7072 Před rokem

    Sería “>=“ , no solo mayor

  • @sagitoon
    @sagitoon Před 7 měsíci

    Eso no me sirve si no me devuelve la data

    • @ernestovillalta7658
      @ernestovillalta7658 Před 2 měsíci

      Esto es en el caso de uso estilo:
      Si en esta lista existe una persona mayor de 18 años, este cuadrito se pintara de verde, caso contrario será rojo. Por lo que te sirve el valor booleano, o para seguir una lógica extra de los datos.
      En caso de querer usar la data de los ítems filtrados debes usar filter, some solo es para variables booleanos.

  • @fabriqr2930
    @fabriqr2930 Před 5 měsíci

    Dijeron que el frontend era bonito y me mata el no saber que framework usar puro js nativo estoy usando :'v

  • @DiegoBM
    @DiegoBM Před rokem

    De verdad has visto a alguien usar filter para hacer eso? Hace ya bastante tiempo que some es el estándar, y un bucle con break o return (si te estas haciendo tu propia función) también es perfectamente correcto, que a fin de cuentas es lo que hace some internamente, pero hay gente que le gusta reinventar la rueda.

    • @midudev
      @midudev  Před rokem

      Si hay gente hasta en los comentarios que ya ha dicho que hasta lo prefiere. 😅

    • @DiegoBM
      @DiegoBM Před rokem

      @@midudev cuando lo has dicho me he asustado y me he puesto a mirar los comentarios, creo que quienes lo prefieren lo ponen en el contexto de necesitar el objeto en lugar de solo saber si si o si no. Aunque hay algunos comentarios que no tienen precio 😂

  • @Necessarius
    @Necessarius Před rokem

    Foreach y break en la aparición.. Meh

    • @midudev
      @midudev  Před rokem +1

      foreach no permite hacer break, melón

  • @McAko
    @McAko Před měsícem

    el nombre del método es bastante horrible, realmente significa "any"

  • @TechSpot_Reviews
    @TechSpot_Reviews Před rokem +1

    Lo mejor es no usar javascript.