Introdução
Neste laboratório, exploraremos como desagrupar elementos de um array com base em uma função fornecida. Usaremos a função unzipWith(), que recebe um array produzido pela função zip() e aplica a função fornecida para desagrupar os elementos. Ao final deste laboratório, você terá uma melhor compreensão de como manipular arrays e realizar operações personalizadas em seus elementos.
Como Desagrupar Elementos de Array com Base em uma Função
Se você precisar desagrupar elementos em um array produzido por zip e aplicar uma função, pode usar unzipWith. Veja como você pode implementá-lo:
- Use
Math.max()e o operador spread (...) para obter o subarray mais longo no array eArray.prototype.map()para transformar cada elemento em um array. - Use
Array.prototype.reduce()eArray.prototype.forEach()para mapear valores agrupados em arrays individuais. - Use
Array.prototype.map()e o operador spread (...) para aplicarfna cada grupo individual de elementos.
const unzipWith = (arr, fn) =>
arr
.reduce(
(acc, val) => (val.forEach((v, i) => acc[i].push(v)), acc),
Array.from({
length: Math.max(...arr.map((x) => x.length))
}).map((x) => [])
)
.map((val) => fn(...val));
Para usar unzipWith, abra o Terminal/SSH e digite node. Em seguida, você pode executar o seguinte exemplo:
unzipWith(
[
[1, 10, 100],
[2, 20, 200]
],
(...args) => args.reduce((acc, v) => acc + v, 0)
);
// [3, 30, 300]
Isso criará um array de elementos desagrupando os elementos no array de entrada produzido por zip e aplicando a função fornecida.
Resumo
Parabéns! Você concluiu o laboratório "Desagrupar Elementos de Array com Base em uma Função". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.