Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!