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

201
Visualizações
¿Cómo se puede crear una función como findSum ([1,2,3,5], 5) que el segundo parámetro es la suma del elemento de la matriz y devolver esos dos elementos en javascript?

Quiero escribir una función que reciba dos parámetros, el primero es una matriz y el segundo es un número entero; Así que quiero devolver dos elementos de la matriz para que su suma sea igual al parámetro de la segunda función. Por ejemplo, en este caso findSum([1,2,3,5], 5) mi función devolverá 2 y 3 cuya suma es 5. Escribí una función pero creo que puede ser mejor con otra codificación optimizada.

 function findSum(arr, sum){ for(element of arr) { const first_element = element; for(innerElement of arr){ if((innerElement !== first_element) && (innerElement + element === sum) ) return {first_element, innerElement} } } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, un problema claro con su código es que findSum([2,2,3],4) no funcionará, debido a esta línea: if((innerElement !== first_element) . Debe verificar los índices, en lugar de los valores para evitar esto.

Ejemplo muy rápido:

 findSum = (arr, sum) => { return arr.map((x, i) => { return arr.map((y, j) => { if(i === j) return null; return x + y === sum ? {x, y} : null; }).filter(x => x); }).flat()[0]; }

Esencialmente, lo que estoy haciendo es muy similar a su versión original, con algunos pequeños ajustes.

En lugar de usar dos bucles for como tú, uso dos mapas para iterar sobre la matriz. Esto me da acceso al índice (i & j).

Si i === j , entonces es exactamente el mismo elemento (y no solo el mismo valor), por lo que podemos ignorarlo. Esto resuelve el problema if((innerElement !== first_element) .

Luego verifico si la suma es correcta y devuelvo los valores, o nulo si es incorrecto. Filtrar esta matriz con filter(x => x) devuelve solo los elementos verdaderos, es decir, elimina los valores nulos, por lo que nos quedan todas las coincidencias.

Luego aplanamos la matriz y devolvemos el primer objeto, ya que eso es todo lo que necesitamos, pero podríamos cambiar eso para devolver todas las coincidencias. findSum([2,2,1,3], 4) tiene dos coincidencias, por ejemplo.

Conceptos clave: Array.map Array.filter Array.flat

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