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

224
Vistas
Suma de 2 elementos en matriz - Algoritmo - JavaScript

Estoy trabajando en algoritmos de JavaScript y me vendría bien algo de ayuda. ¿Qué estoy haciendo mal exactamente?

// Dada una matriz de arr, enteros positivos y otro número X.

// Determinar si existen o no dos elementos en arr cuya suma sea exactamente X.

 function keyPair(arr, x){ var sum=false; var key=0; var temp=0; for(var i=0;i<=arr.length;i++){ while(sum=false){ key=arr[i]; arr[i]=temp; temp=key; } if(temp+arr[i]==x){ sum=true; } } console.log(sum); } keyPair([1,2,4,3,6], 4);
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Creo que esto merece una explicación:

sum=false es una instrucción de asignación. Como expresión, una declaración de asignación se evalúa como undefined (independientemente del valor asignado). Así while(sum=false) es en realidad while(undefined) , que se interpreta como while(false) .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Su error fue, como se explicó varias veces, el operador de comparación incorrecto. Me tomé la libertad de reescribir su código con una llamada .reduce() :

 function keyPair(arr,sum){ return arr.reduce((a,c,j)=>{ let i=arr.indexOf(sum-c); if (i>-1 && j<i) a.push([c,arr[i]]); return a;}, []); } console.log(keyPair([1,2,4,3,6], 5));

about 4 years ago · Juan Pablo Isaza Denunciar

0

No voy a repetir lo que ya se ha dicho sobre su código. Pero incluso si está comenzando a codificar en JS, vale la pena comenzar a usar las funciones integradas de JS que le ahorrarán mucho tiempo:

// Determinar si existen o no dos elementos en arr cuya suma sea exactamente X.

Así que solo te interesa whether existen, no cuáles son esos:

 const keyPair = (arr,value) => // some: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some // slice: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice arr.some( (x,i) => arr.slice(i).some( y => x + y === value)); console.log(keyPair([1,2,4,3,6], 4)) console.log(keyPair([1,1,1,1,1], 4))

Con some , verifica si hay una suma x+y que es igual a su valor deseado

Con slice , omite la parte de la matriz que no necesita verificar

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