3
respostas

Sugestão: Tratar o retorno do indexOf em vez de usar o includes

findIndex "filtra" uma array de acorto com o parâmetro passado e retorna o index do primeiro resultado e pelo index pegar quais valores você deseja.

Dessa forma podemos descartar o uso de uma array multipla e simplificar o código.

const aluno = ['João', 'Juliana', 'Caio', 'Ana']
const mediasAlunos = [10,7,9,6]

const pesquisaPorNome = (nome) => {
  const index = aluno.indexOf(nome)
  return index !== -1 ? `${aluno[index]}, sua média é: ${mediasAlunos[index]}` : `O aluno ${nome} não encontrado`
}

console.log(pesquisaPorNome('Ana'))
console.log(pesquisaPorNome('Juliana'))

console.log(pesquisaPorNome('Guilherme'))

Saidas/Testes: Execução do código, exemplo visual

3 respostas

Um dúvida, oque justifica o uso do findIndex() ao invés do indexOf() em termos de simplificação do código nesse caso?

Porque se o objetivo foi simplificar, é o findIndex() que "permite" que a matriz seja desagregada, e indexOf() não?

Sim houve uma simplificação no seu código, simplificação em termos de desempenho também, fora isso, na minha opinião, acho que "simplificação" é relativa, Vejamos:

Houve simplificação tanto na sintaxe quando em passos do algorítimo quando você removeu o includes() a passou a usar um método só de busca para achar o aluno, mas, por outro lado, você trocou o método indexOf() que já tem seu próprio critério de comparação por findIndex() no qual você tem que definir seu critério, "adição de complexidade". No lugar do if else, vc usou o retorno da expressão ternária, que acredito que para alguns, pode ser mais claro, e para outros não, relativo nesse caso.

Houve simplificação sim, pois a desagregação dos alunos e notas tanto em termos de algorítimo é melhor (pensando hipoteticamente em 150.000 elementos, eles seriam duplicados nessa abordagem) quanto em termos de sintaxe & estruturas de dados (pois nem todo mundo pode entender uma matriz com facilidade no início), mas que essa simplificação foi pelo uso do findIndex() eu não compreendi :( me ajuda ai

me corrija tmb se errei em alguma observação thx :D

Durante o vídeo eu achei que eles iam fazer uma pesquisa com predicado, porém posteriormente isso não aconteceu. E no caso de pesquisas para tipos primitivos tanto o findIndex e indexOf conseguem operar da mesma forma desde que não exista a necessidade do uso de um predicado, e nesse caso não existe essa necessidade.

O titulo dessa thead deveria ser "Sugestão: Tratar o retorno do indexOf em vez de usar o includes". Obrigado pela observação, irei alterar o titulo. :D

Ou eles tiveram algum objetivo em mente para usar o include em vídeo? Pro exemplo, apresentar mais métodos?

Edit:

No lugar do if else, vc usou o retorno da expressão ternária, que acredito que para alguns, pode ser mais claro, e para outros não, relativo nesse caso.

Não acredito que isso deva ser considerado como parâmetro para simplificação ou não, o uso do if/else pode até ser considerado, o ponto não é esse. O ponto é justamente a necessidade do uso do include para validar a existência do item dentro da Array, já que o próprio indexOf retorna -1 caso não exista.

Esse código na minha visão é mais simples:

const aluno = ['João', 'Juliana', 'Caio', 'Ana']
const mediasAlunos = [10,7,9,6]

const pesquisaPorNome = (nome) => {
  const index = aluno.indexOf(nome)
  if (index !== -1) {
       return `${aluno[index]}, sua média é: ${mediasAlunos[index]}`
  } else {
     return `O aluno ${nome} não encontrado`
  }
}

console.log(pesquisaPorNome('Ana'))
console.log(pesquisaPorNome('Juliana'))

console.log(pesquisaPorNome('Guilherme'))

Não acredito que isso deva ser considerado como parâmetro para simplificação ou não, o uso do if/else pode até ser considerado, o ponto não é esse

então estás falando em simplificação em termos de passos/quantidade de instruções, não em sintaxe..!!?

Shoow, agr entendi, acho q só falta tirar o critério do indexOf da segunda resp :3