Desagrupar elementos de un array en función de una función

JavaScriptJavaScriptBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos cómo desagrupar los elementos de un array en función de una función proporcionada. Utilizaremos la función unzipWith(), que toma un array producido por la función zip() y aplica la función proporcionada para desagrupar los elementos. Al final de este laboratorio, tendrás una mejor comprensión de cómo manipular arrays y realizar operaciones personalizadas en sus elementos.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/data_types -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/arith_ops -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/comp_ops -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/array_methods -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/higher_funcs -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} javascript/spread_rest -.-> lab-28680{{"Desagrupar elementos de un array en función de una función"}} end

Cómo desagrupar elementos de un array en función de una función

Si necesitas desagrupar los elementos de un array producido por zip y aplicar una función, puedes utilizar unzipWith. Aquí te muestro cómo implementarlo:

  1. Utiliza Math.max() y el operador de propagación (...) para obtener la submatriz más larga del array y Array.prototype.map() para convertir cada elemento en un array.
  2. Utiliza Array.prototype.reduce() y Array.prototype.forEach() para mapear los valores agrupados a arrays individuales.
  3. Utiliza Array.prototype.map() y el operador de propagación (...) para aplicar fn a 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 utilizar unzipWith, abre la Terminal/SSH y escribe node. Luego, puedes ejecutar el siguiente ejemplo:

unzipWith(
  [
    [1, 10, 100],
    [2, 20, 200]
  ],
  (...args) => args.reduce((acc, v) => acc + v, 0)
);
// [3, 30, 300]

Esto creará un array de elementos desagrupando los elementos del array de entrada producido por zip y aplicando la función proporcionada.

Resumen

¡Felicitaciones! Has completado el laboratorio de Desagrupar Elementos de un Array en Función de una Función. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.