Olá, ao realizar os exercícios propostos na seção de filters no curso de JS manipulando arrays com o seguinte enunciado:
1 - Faça uma função que aceite vários arrays como argumentos e retorne um único array contendo todos os elementos dos arrays fornecidos, utilizando Spread Operator.
Dica: é possível usar o spread operator diretamente em um parâmetro de função para "espalhar" seu conteúdo, por exemplo function funcaoExemplo(...params).
Desenvolvi a seguinte solução:
const {log} = console
log();
log('Exercício 1');
log();
function uniaoDeArrays(receitaFuba, receitaBolo, receitaVitamina) {
return uniaoReceitas = [...receitaFuba, ...receitaBolo, ...receitaVitamina];
}
const ingredientesFuba = ['fuba de milho', 'farinha de trigo', 'oleo', 'açucar', 'ovos', 'sal', 'leite'];
const ingredientesBolo = ['farinha de trigo', 'oleo', 'açucar', 'ovos', 'sal', 'leite'];
const ingredientesVitamina = ['leite', 'banana', 'maça', 'mamão', 'neston'];
log(uniaoDeArrays(ingredientesFuba, ingredientesBolo, ingredientesVitamina));
porem ao visualizar o código com a solução proposta pelo instrutor do curso surgiu uma dúvida: Ao chamar a função concatArrays() são passados três parâmetros, sendo que a função recebe um único parâmetro com o spread operator, como isso é possível? Isso é uma particularidade de arrays com spread operator ou existe outras situações que pode ser aplicado da mesma forma? Confesso que isso me deixou intrigado.
function concatArrays(...arrays) {
return [].concat(...arrays); // operador spread para concatenar os arrays
}
const arr1 = [1, 2];
const arr2 = [3, 4];
const arr3 = [5, 6];
const arraysConcatenados = concatArrays(arr1, arr2, arr3);
console.log(arraysConcatenados); // Saída: [1, 2, 3, 4, 5, 6]