Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Passagem de parâmetro utilizando spread operator

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]
1 resposta
solução!

Olá José, tudo bem com você?

O spread operator (ou operador de espalhamento) é uma funcionalidade do JavaScript que permite "espalhar" os elementos de um array em locais onde zero ou mais argumentos são esperados.

No exemplo do instrutor, a função concatArrays(...arrays) está sendo definida para aceitar um número indefinido de argumentos, que são agrupados em um array chamado arrays. Isso é possível graças ao spread operator. Quando você chama concatArrays(arr1, arr2, arr3), você está passando três argumentos para a função. O spread operator então agrupa esses argumentos em um array, resultando em [[1, 2], [3, 4], [5, 6]].

Depois, dentro da função, o spread operator é usado novamente, mas desta vez para "desagrupar" os arrays, transformando-os em argumentos individuais para a função concat. Portanto, não é uma particularidade de arrays com spread operator, mas uma característica do spread operator em si, que pode ser usado em várias situações, não apenas com arrays.

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade. Em caso de dúvidas estou à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!