Stack Overflow em Português Asked by José Sousa on November 17, 2021
Temos uma lista com nomes de todos os integrantes da família mas
esqueceram de colocar o sobrenome!.Seu desafio será imprimir nome junto com o sobrenome "Macedo" para
cada integrante da família. Mas temos uma exceção, temos um integrante
com sobrenome diferente, se tiver algum "Pedro", coloque o sobrenome
"Sousa".Dica: Utilize
for
econtinue
para criar a solução. Acrescente um
espaço antes do sobrenome, por exemplo: " Sousa".
Código que eu fiz:
var familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"]
var familia2 = " "
for (i = 0; i < familia.length; i++){
if( familia[i] == 'Pedro' ){
console.log(familia[i] + ' Sousa')
continue
}
else if(familia[i] == 'Pedro'){
console.log(familia[i] + ' Macedo')
}
}
const familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"]
familia.forEach(nome => {
console.log(${nome} ${nome === 'Pedro' ? 'Sousa' : 'Macedo'}
)
})
Answered by MADS1974 on November 17, 2021
for (var i = 0; i < familia.length; i++){
if (familia[i] == "Pedro")
console.log(familia[i] + " Sousa")
if(familia[i] !== "Pedro")
console.log(familia[i] + " Macedo")
continue
}
Olá , consegui a solução do código assim:
No terminal do exercício não permitia o uso do else, ou else if... e exigia o uso do continue. foi a única forma que consegui fazer rodar. Espero que contribua.
Answered by Maurício Costa on November 17, 2021
Como no exercício pedia o uso do continue
, fiz assim
var familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"]
for (var i = 0; i < familia.length; i++){
if(familia [i] == "Pedro") {
console.log(familia[i] + " Sousa")
continue
}
console.log( familia[i] + " Macedo")
}
Answered by Karine Kerr on November 17, 2021
O problema está no seu if
:
if( familia[i] == 'Pedro' ){
console.log(familia[i] + ' Sousa')
continue
} else if(familia[i] == 'Pedro'){
console.log(familia[i] + ' Macedo')
}
Primeiro você testa se o nome é "Pedro". Depois no else
você testa se é "Pedro" de novo. Não faz sentido testar a mesma coisa duas vezes.
Além disso, o continue
dentro do if
é desnecessário. Usando apenas o if
e else
você já garante que somente um dos caminhos é executado.
Segundo a regra do exercício, o que você deve fazer é: se o nome for "Pedro", sobrenome é "Sousa". Senão (para qualquer outro nome que não seja "Pedro") o sobrenome é "Macedo". Então ficaria assim:
var familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"];
for (var i = 0; i < familia.length; i++) {
if (familia[i] == 'Pedro') { // se o nome é Pedro, o sobrenome é Souza
console.log(familia[i] + ' Sousa');
} else { // senão (se o nome não é Pedro), o sobrenome é Macedo
console.log(familia[i] + ' Macedo');
}
}
Também removi a variável familia2
que não estava sendo usada para nada. E coloquei ponto e vírgula no final das linhas - sei que é opcional (o JavaScript não reclama se não tiver) e pode parecer "frescura", mas isso evita algumas situações bizarras que podem ocorrer se você não usá-los, como essa e essa (veja mais sobre isso aqui).
Outra forma de fazer é usar um for...of
para percorrer o array, e template strings para imprimir:
var familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"];
for (var nome of familia) {
if (nome == 'Pedro') {
console.log(`${nome} Sousa`);
} else {
console.log(`${nome} Macedo`);
}
}
Ou ainda o forEach
, como sugerido na outra resposta.
continue
O exercício dá a "dica" de usar continue
, mas eu acho completamente desnecessário. A ideia do continue
é ir para a próxima iteração do for
, ignorando qualquer coisa que venha depois.
Então ficaria assim:
var familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"];
for (var i = 0; i < familia.length; i++) {
if (familia[i] == 'Pedro') { // se o nome é Pedro, o sobrenome é Souza
console.log(familia[i] + ' Sousa');
continue;
}
console.log(familia[i] + ' Macedo');
}
Ou seja, se entrar no if
, ele imprime "Pedro Souza" e o continue
faz com que ele vá para a próxima iteração do for
(no caso, irá para o nome "Bruno"). Se o nome não for "Pedro", não entra no if
e imprime o sobrenome "Macedo".
Mas eu acho uma complicação desnecessária, somente para forçar o uso do continue
. Ainda acho a solução com if
/else
mais simples e clara.
Answered by hkotsubo on November 17, 2021
Tente isso aqui amigo
const familia = ["Joana", "Felipe", "Gabriela", "Carlos", "Pedro", "Bruno"]
familia.forEach(nome => {
console.log(`${nome} ${nome === 'Pedro' ? 'Sousa' : 'Macedo'}`)
})
Answered by Jason Rabelo on November 17, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP