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

179
Vistas
Cómo comparar dos listas y encontrar si el elemento de la primera lista existe entre dos valores de la otra lista

Tengo una lista de edades y grupos de edades.

Quiero tomar cada elemento de la lista de edades y buscar en la lista ageGroup el intervalo donde se recupera el precio, si un elemento está en dos intervalos para recuperar el precio más bajo de la lista, quiero la suma de los precios totales .

Por ejemplo :

para los 8 años tengo precio =50 y para 20 y 67 tengo dos opciones 90 y 70, elegiré el precio más bajo que es 70 y luego el resultado debe ser 70 + 70 + 50 = 190 precio = 190

 let ages = [8, 20, 67] let agesGroups = [{ min: 10, max: 90, price: 90 }, { min: 10, max: 90, price: 70 }, { min: 0, max: 10, price: 50 } ] let price = 0 ages.forEach(a => { agesGroups.forEach(s => { if (a >= s.min && a <= s.max) { price = price + parseInt(s.price, 10); } }) }) console.log(price);

El resultado que obtuve

 price = 140
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Solución, por sugerencia de @Barmar, usando reduce(). "resultado" ahora contiene precios mínimos para todas las edades. Puede resumirlos si es necesario:

 let result = [] ages.forEach(a => { result.push(agesGroups.reduce((res, s) => { if(a >= s.min && a <= s.max) { if (s.price < res) { res = s.price} } return res }, Infinity)); }); console.log(result)
about 4 years ago · Juan Pablo Isaza Denunciar

0

A veces, el uso de métodos Array es demasiado restrictivo para lo que se devuelve y es difícil de navegar. Un bucle for...of es más fácil de leer y refactorizar con métodos Array más adelante.

  • Defina la matriz de prices para mantener cada mejor precio

  • Exterior for...of bucle para iterar la matriz de ages

    • Defina la matriz inRange para mantener cada precio dentro de un range

    • Interno for...of bucle para iterar matriz de ranges

      • Determine si la age está dentro del rango de range.min y range.max
      • Empuje range.price en la matriz inRange si la age está dentro del rango
    • Inserte el rango más range.price de inRange en la matriz de prices

       prices.push( Math.min(...inRange));
  • Luego agregue todos los precios de la matriz de price

     prices.reduce((sum, add) => sum + add) 

 let ages=[8,20,67],ranges=[{min:10,max:90,price:90},{min:10,max:90,price:70},{min:0,max:10,price:50}]; let prices = []; for (let age of ages) { let inRange = []; for (let range of ranges) { if (age >= range.min && age <= range.max) { inRange.push(range.price); } } prices.push( Math.min(...inRange)); } let total = prices.reduce((sum, add) => sum + add); console.log(total);

Refactorizado

 let ages=[8,20,67],ranges=[{min:10,max:90,price:90},{min:10,max:90,price:70},{min:0,max:10,price:50}]; let total = ages.map(age => { let prices = ranges.flatMap(rng => rng.min <= age && rng.max >= age ? [rng.price] : []); return Math.min(...prices); }).reduce((sum, add) => sum + add); console.log(total)

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