Ajuda javascript array

Galera sou iniciante em programação estou tentando resolver um exercicio da net
que tenho que percorrer este array mais tem que ser com o while

let array [2, 8, 9, 5, 4, 6, 0, 7, 1, 3];

1 curtida

Bom analisando o seguinte código:

for (let i = 0; i < onibus.length; i++) 
     // logica do loop

Podemos ver que o for tem 3 estruturas principais:
inicialização: let i = 0
Condição: i < onibus.length
Atualização: i++

Para resolver essa questão usando while basta “implementar a logica do for”:

/** inicialização */
let i = 0

while (i < onibus.length /** condição */) {
     /** logica do loop */

     /** atualização */
     i++
}

Esse trecho de código percorre todos os valores do array onibus. Agora so precisamos encontrar a menor idade(menor numero do array)

let menorIdade = onibus[0]
let valorAtualDoArray = 0

/** inicialização */
/** já que supomos que o menor valor esta na posição
0 do array, não inicia da posição 0 e sim da posição 1  */
let i = 1

while (i < onibus.length /** condição */) {
     /** logica do loop */
     valorAtualDoArray = onibus[i]

     if (valorAtualDoArray < menorIdade)
             menorIdade = valorAtualDoArray

     /** atualização */
     i++
}

console.log(menorIdade)

explicação da logica
let menorIdade = onibus[0] essa variável serve para guardar o valor da menor idade, aqui vamos supor que a menor idade esta no primeiro valor do array. Então precisamos apenas verificar o restante do array para ter certeza que esse é o menor valor.

let valorAtualDoArray = 0 serve para guardar o valor atual que o laço está percorrendo.

 if (valorAtualDoArray < menorIdade) {
            menorIdade = valorAtualDoArray
} 

o que esse codigo faz é verificar se cada posição do array é menor do que menorIdade

console.log(menorIdade) por fim apresentamos esse valor no console.

simulação da execução do algoritmo
onibus = [3, 10, 2]

1° repetição
menorIdade = 3
valorAtualDoArray = 10

if (valorAtualDoArray < menorIdade) /** 10 < 3 */ F

2° repetição*
menorIdade 3
valorAtualDoArray = 2

if (valorAtualDoArray < menorIdade) /** 2 < 3 */ V
Então a menorIdade vai ser 2

Fim do array
Então o algoritmo mostra o valor 2 no console e encerra a execução.

Espero que tenha entendido! E bons estudos

1 curtida

obrigado pela ajuda me ajudou demais, só que tem um problema eu precisava mostrar o resultado assim o mais novo tem 0 anos e está na cadeira 6.

no caso o valoratualdoarray eu dou um console.log e me apresenta que ele está na 3

A ok! Basta ceiar mais uma variável para guardar o lugar (índice do array da menor idade), então na condição você coloca:

    if (valorAtualDoArray < menorIdade) {
            menorIdade = valorAtualDoArray
            numeroCadeira = i /** índice da menor idade */
     }

Assim resolve o problema

vou testar

const array = [5, 3, 4,7, 10]

let menorIdade = array[0]
let lugarMenorIdade = 0

let valorAtualDoArray = 0
let i = 1

while (i < array.length ) {
    valorAtualDoArray = array[i]
    
    if (valorAtualDoArray < menorIdade ) {
        menorIdade = valorAtualDoArray 
        lugarMenorIdade = i
    }
    i++
}

console.log("Menor Idade: ", menorIdade)
console.log("Numero Cadeira: ", lugarMenorIdade)

Código completo, fiz o teste e funcionou

1 curtida

funcionou perfeitamente