Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

110
Vistas
Convierta estas funciones anidadas de flecha a estilo antiguo y qué sucede con las variables

Estoy tratando de encontrar elementos de una lista que no están en los elementos de una segunda lista. Casi por pura suerte conseguí que funcionara, pero solo con funciones de flecha. Para mí, las funciones normales son más fáciles de leer, así que intenté convertirlas y el resultado no es el que esperaba.

datos:

 const arr1 = [ { "key": 1, "val": "one" }, { "key": 2, "val": "two" }, { "key": 3, "val": "three" } ] const arr2 = [ { "key": 3, "val": "three" }, { "key": 4, "val": "four" }, { "key": 1, "val": "one" } ]

versión 1

 arr1.filter((element) => arr2.findIndex((innerElement) => element.key === innerElement.key) === -1); // produces object with key 2

versión 2

 arr1.filter(function(element) { return arr2.findIndex(function(innerElement) { element.key === innerElement.key === -1 }) }) // produces all three objects in arr1

Para hacer que el correcto sea más breve, eliminé los paréntesis adicionales y todavía funciona:

 arr1.filter(element => arr2.findIndex(innerElement => element.key === innerElement.key) === -1);

Me estoy perdiendo un aspecto clave aquí. Obtengo que cada elemento en arr1 se pasa a una función y esa función interna a su vez pasa su resultado a otra función y la expresión tiene acceso a ambos conjuntos de argumentos y se ejecuta. Pero creo que tengo el modelo mental equivocado sobre el orden o algo así.

¿Alguien puede explicar qué está sucediendo en cada paso y cómo pensar al respecto? ¿Y cómo lo convierto en una función normal ?

Estaré lidiando con muchas estructuras anidadas y siento que esta es un área débil en la que me gustaría mejorar.

Gracias

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe devolver el valor de la comparación. Y la prueba === -1 debe ser con el resultado de findIndex() , no dentro de su devolución de llamada.

 arr1.filter(function(element) { return arr2.findIndex(function(innerElement) { return element.key === innerElement.key; }) === -1; });

Esto se puede simplificar con el método some() .

 arr1.filter(function(element) { return !arr2.some(function(innerElement) { return element.key === innerElement.key }) })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda