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

209
Vistas
¿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 Respuestas
Responde la pregunta

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 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