Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

alguém pode me dizer porque o código não funcionou?

const Jogos = [{
    titulo: "League Of Legends",
    preco: 0
},
{
    titulo: "Call Of Duty 2",
    preco: 250
},
{
    titulo: "Valorant",
    preco: 50
},
{
    titulo: "Mario Kart",
    preco: 150
},
{
    titulo: "Need For Speed",
    preco: 70
}]

function menorvalor(produt, posinicial){

    let maisbarato = posinicial

    for(let atual = posinicial ; atual < produt.length ; atual++ ){
        if(produt[atual].preco < produt[maisbarato].preco){
            maisbarato = atual
        } return maisbarato
    }
}

Jogos.forEach((jogo, indice) => {
    let menor = menorvalor(jogo, indice)

    let jogoAtual = Jogos[indice]
    let jogoMenorPreco = Jogos[menor]

    Jogos[indice] = jogoMenorPreco
    Jogos[menor] = jogoAtual
})

console.log(Jogos)
3 respostas

Olá Gustavo, como vai? Espero que bem! Ao que reparei, voce está rodando 2 loops para procurar o menor valor entre os jogos, sendo que somente o primeiro loop já te trouxe o resultado, porem, cada vez que você coloca um return dentro de um loop, a partir do momento que ele cai no return ele irá sair do loop, por isso não estava lhe retornando valores.

Fiz dessa maneira:

const Jogos = [{
  titulo: "League Of Legends",
  preco: 100
},
{
  titulo: "Call Of Duty 2",
  preco: 250
},
{
  titulo: "Valorant",
  preco: 50
},
{
  titulo: "Mario Kart",
  preco: 150
},
{
  titulo: "Need For Speed",
  preco: 70
}]

function menorvalor(produt, posinicial){

  let maisbarato = posinicial

  for(let atual = posinicial ; atual < produt.length ; atual++ ){
    if(produt[atual].preco < produt[maisbarato].preco){
      maisbarato = atual
    }
  }
  return maisbarato
}

console.log(menorvalor(Jogos, 0))

Espero que tenha resolvido, abraços!

como eu resolveria esse problema usando o foreach?

solução!

Com a utilização do forEach ficaria parecido:

const Jogos = [{
  titulo: "League Of Legends",
  preco: 100
},
{
  titulo: "Call Of Duty 2",
  preco: 250
},
{
  titulo: "Valorant",
  preco: 50
},
{
  titulo: "Mario Kart",
  preco: 15
},
{
  titulo: "Need For Speed",
  preco: 70
}]

function menorvalor(produt, posinicial){

  let maisbarato = posinicial

  produt.forEach((_, index) => {
    if(produt[index].preco < produt[maisbarato].preco){
      maisbarato = index
    }
  })

  return maisbarato
}

console.log(menorvalor(Jogos, 0))