Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

114
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda