Filter ou For loop?

JavaScript

19/06/2020

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

Curtidas 0

Melhor post

Jothaz

Jothaz

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




GOSTEI 1

Mais Respostas

Eliaquim Nascimento

Eliaquim Nascimento

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

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!
GOSTEI 0
POSTAR