Só um detalhe, o artigo trata map
, filter
e similares como equivalentes ao loop, mas não é bem assim.
map
percorre o array, é verdade, mas ele executa uma ação com cada elemento e retorna outro array com os resultados. Então se vc não precisa desse outro array (por exemplo, vc só imprimiu o resultado e depois não vai mais precisar dele), não tem porque usar map
.
filter
também retorna outro array, mas contendo somente os elementos que satisfazem o critério. De novo, se vc não precisa desse array, não tem porque usar, e um loop simples é mais adequado.
Já every
, some
e find
nem sempre percorrem todo o array. Eles param quando detectam que não precisa mais. Por exemplo, find
interrompe o loop assim que encontra o elemento que satisfaz o critério. Ou seja, o código abaixo:
var array = [1,2,3,4,5,6];
array.find(function (x) {
console.log('verificando', x);
return x % 2 == 0;
});
Imprime:
verificando 1
verificando 2
Pois assim que encontrou um elemento que satisfaz o critério, ele para de procurar. Os mesmo vale para os demais: every
verifica se todos os elementos satisfazem o critério, então se um não satisfaz, ele nem verifica os demais. E some
é o contrário: verifica se algum elemento satisfaz o critério, então se encontrar um que satisfaz já é o suficiente e ele nem verifica o resto.
E reduce
só faz sentido se vc quer um resultado agregado de todos os elementos. Ainda sim, todos esses métodos que recebem uma função de callback acabam tendo um custo extra, pois é feita uma chamada de função para cada elemento. Claro que para arrays pequenos tanto faz, mas se for processar grandes volumes de dados, tem que levar isso em conta.
Vale contar também que tem outras diferenças, como ser mais complicado usar break
em um forEach
. E ao contrário do que afirma o artigo, for in
não é só para objetos, também serve para arrays. E vc pode tornar um objeto iterável, tornando possível o uso de for of
.
E vale lembrar que existem diferenças importantes entre for in
, for of
e um for
"tradicional":
Ou seja, tem vezes em que tanto faz usar um ou outro, mas tem vezes que faz diferença. E dependendo do que vc precisa, recomenda-se escolher o método mais adequado. Não dá pra simplesmente tratar todos como se fossem a mesma coisa.