Filter ou For loop?

19/06/2020

0

Fala galera!

Estou com uma dúvida aqui eu tenho os seguintes códigos, onde quero descobrir, dentro de um array de pessoas, se alguma delas tem a idade de 19 anos. Se ela tiver, eu mudo o valor da variável "menorDeVinte" para true.

Eu fiz de duas formas, usando for loop e outra com filter.
A minha questão é que no for loop, assim que achar o resultado dentro do array, eu posso usar o break e interromper o loop.

Como o filter funciona? Assim que ele acha o resultado ele interrompe o loop dentro dele? Ou ele vai iterar sobre todos os elementos, mesmo já tendo encontrado uma resposta?

let pessoas = [{Nome: Carlos, Idade: 20}, {Nome: Claudia, Idade: 30}, {Nome: Bruna, Idade: 19}];
let menorDeVinte = false;
for(let l = pessoas.length; l--;){
    if(pessoas[l].Idade === 19){
        menorDeVinte = true;
        break;
    }
}
// Método filter
let filtered = pessoas.filter(item => item.Idade === 19);
if(filtered){
    menorDeVinte = true;
}
Eliaquim Nascimento

Eliaquim Nascimento

Responder

Post mais votado

19/06/2020

Você mesmo pode executar um benchmark para verificar qual solução é mais performática.

Basta usar
console.time () p
que consegue mensurar.
Existem uma discussão sobre benchmark , pois deve-se levar em questão a CPU pode esta fazendo outras coisas enquanto executa seu código.
Então para obter um resposta o mais próximo da realidade é interessante executar os testes muitas vezes, mas muitas vezes mesmo.

Minha visão pessoal, de acordo com minha experiência, claro posso estar errado.

O for é mais performático do que função, pois nunca sabemos o que esta encapsulado nas funções.

Pessoalmente, prefiro map, reduce, filter, encontrar e utilizo-os há muito tempo.
Eles me ajudaram a escrever de forma limpa, precisa, rápida mantendo a legibilidade do código o que facilita imensamente a manutenção.
E é aderente ao paradigma de linguagem funcional.
Eu uso o loop quando não tenho mais escolha.

As vezes é muito mais oneroso perder-se me tentativas de otimizar (tunar) o um código do que usar um código menos performático, porém mais simples e aderente a tecnologia usada.
Ao invés de inventar a roda usa uma pronta e testada.

Algumas considerações quando for implementar uma solução:

Legibilidade e manutenção do código
Código de minimalista
Rapidez para codificar
Implementação vs otimização
Escolha pessoal




Jothaz

Jothaz
Responder

Mais Posts

18/07/2020

Eliaquim Nascimento

Você mesmo pode executar um benchmark para verificar qual solução é mais performática.

Basta usar
console.time () p
que consegue mensurar.
Existem uma discussão sobre benchmark , pois deve-se levar em questão a CPU pode esta fazendo outras coisas enquanto executa seu código.
Então para obter um resposta o mais próximo da realidade é interessante executar os testes muitas vezes, mas muitas vezes mesmo.

Minha visão pessoal, de acordo com minha experiência, claro posso estar errado.

O for é mais performático do que função, pois nunca sabemos o que esta encapsulado nas funções.

Pessoalmente, prefiro map, reduce, filter, encontrar e utilizo-os há muito tempo.
Eles me ajudaram a escrever de forma limpa, precisa, rápida mantendo a legibilidade do código o que facilita imensamente a manutenção.
E é aderente ao paradigma de linguagem funcional.
Eu uso o loop quando não tenho mais escolha.

As vezes é muito mais oneroso perder-se me tentativas de otimizar (tunar) o um código do que usar um código menos performático, porém mais simples e aderente a tecnologia usada.
Ao invés de inventar a roda usa uma pronta e testada.

Algumas considerações quando for implementar uma solução:

Legibilidade e manutenção do código
Código de minimalista
Rapidez para codificar
Implementação vs otimização
Escolha pessoal

Olá Jothaz!
Muito obrigado pela sua resposta. Acabei usando o filter realmente pela rapidez e em muitos casos acabou sendo mais performático usar quando o array tem muitos elementos.
Valeu mesmo!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar