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

180
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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