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!