JS-0407 - JavaScript Completo ES6 - Iteração em Array

Métodos que interagem em cada elemento de um array
Os métodos de iteração com arrays são os métodos que interagem com cada elemento do array, realizando um looping entre estes e realizando as suas ações.
Um dos mais utilizados é o forEach(), e ele é composto de três argumentos e um callback: forEach(callback(item, index, array)), onde afunção de callback é executada para cada item do array e o array é uma referência ao array original. Ex:

Utilizando arrow function podemos simplificar esta função:

O forEach() sempre retorna undefined. Para obter o retorno em iterações é utilizado o método map(). Ele é composto pelo callback e os parâmetros item, index e array: map(callback(itemAtual, index, array)), operando igual ao forEach, contudo, ao invés de retornar undefined, retorna um novo array com valores atualizados de acordo com o retorno de cada iteração. Ex:

Uma Arrow Function de linha única e sem chaves irá retornar o valor após a fat arrow =>. Ex:

A diferença entre os métodos forEache mapserá quanto ao objetivo. Se a necessidade for obter ou manipular um novo array a partir de um existente, utiliza-se o map, caso seja necessário apenas a manipulação de um array, sem a necessidade do retorno, tal como a atribuição de um estilo a um grupo de elementos em um array, utiliza-se o forEach.
O método map pode ser muito útil para a iteração com um array de objetos, possibilitando a manipulação de um valor único de cada objeto. Dentro da arrow function, o item pode receber qualquer nome, e após a seta, ele será a referência para acessar a propriedade do objeto: variável = objeto.map(item => item.propriedade). Ex:

O método reduce(), reduce(callback(acumulador, valorAtual, index, array), valorInicial), executa uma função de callback para cada item de um array, utilizando o parâmetro especial nessa função, o acumulador, que é o valor retorno da iteração anterior sobre o array. Se não definirmos o valor inicial do acumulador, ele irá pular a primeira iteração e começará a partir da segunda e terá como valor o item da primeira iteração. Qualquer valor pode ser utilizado como inicial e será utilizado como parâmetro de callback. O retorno do reduce será o valor final. Ex:

O reduce itera sempre da esquerda para a direita. Caso seja necessário o reduce iterando da direita para a esquerda, existe o método reduceRight(). Ex:

No exemplo acima, o acumulador não foi passado para, justamente, ter como primeiro valor o primeiro elemento do array.
Para verificar se ao menos um valor de uma iteração é verdadeiro em uma condição (truthy), pode ser utilizado o método some(). Caso não haja nenhum retorno que satisfaça a condição, será retorno um false. Ex:

Para verificar se todos os retornos da iteração são truthy, é utilizado o método every(). Se um único retorno do callbakc for falsy o retorno final será false. Ex:

O método find() retorna o valor atual da primeira iteração que retornar um valor truthy. O findIndex()funciona da mesma forma, retorno o índice do elemento. Ex:

Para filtrar valores de um aaray, retornando um novo array contendo uma lista de valores que satisfaçam a condição da iteração, um truthy, podemos utilizar o método filter(). Ex:




