Durante a aula de Manipulando Array fui programando junto com o instrutor conforme ia entendendo a lógica usada por ele. Acontece que, ao final da aula, fui testar o código para ver se estava funcionando certinho, percebi que apareciam números repetidos, fui buscar o erro no meu código e, visualmente, parecia tudo normal. Fui comparar meu código detalhadamente com o código do instrutor, e, percebi que ao invés de colocar achou = true; eu coloquei achou == true;
if (segredos[posicao] == numeroAleatorio){
achou = true;
break;
}
if (segredos[posicao] == numeroAleatorio){
achou == true;
break;
}
Ainda não compreendi direito quando devo usar o =** ou **==, mas sei que o =** significa que estou atribuindo e o **== significa igualdade em si. Alguém pode me explicar isso detalhadamente? A lógica que eu uso por trás disso e etc. Vou deixar o código completo:
<meta charset="UTF-8">
<input/>
<button>Compare com o meu segredo</button>
<script>
function sorteia(){
return Math.round(Math.random() * 10);
}
function sorteiaNumeros(quantidade) {
var segredos = [];
var numeros = 1;
while ( numeros <= quantidade ) {
var numeroAleatorio = sorteia();
var achou = false;
if (numeroAleatorio !== 0) {
for(var posicao = 0; posicao < segredos.length; posicao++) {
if (segredos[posicao] == numeroAleatorio){
achou = true;
break;
}
}
if (achou == false) {
segredos.push(numeroAleatorio);
numeros++
}
}
}
return segredos;
}
//5,7,10,2,3
var segredos = sorteiaNumeros(3);
console.log(segredos);
var input = document.querySelector("input");
input.focus();
function verifica(){
var achou = false;
for (var posicao = 0; posicao < segredos.length; posicao++) {
if (input.value == segredos[posicao]) {
alert("Você acertou")
achou = true;
break;
}
}
if (achou == false) {
alert("Você errou.");
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>