¿Cómo crear una array de elementos, desagrupando los elementos en una array producida por zip en JavaScript?

Podemos crear una array de elementos desagrupando los elementos en una array producida por zip usando diferentes métodos en JavaScript como Math.max() y métodos específicos de la array, a saber , Array.prototype.map() , Array.prototype.reduce( ) y Array.prototype.forEach() . Esta operación también se puede denominar descomprimir .

Antes de ver unzip , comprendamos qué hace zip . Zip crea una array de elementos, agrupados según su posición en las arrays originales. Para lograr esto, podemos hacer uso de métodos JavaScript como Math.max() , Array.from() y Array.prototype.map()

Acercarse:

  • Math.max(): para obtener la array más larga de todas las arrays de argumentos.
  • Luego, cree una array con esa longitud como valor de retorno y use Array.from() con una función de mapeo para crear una array de elementos agrupados.
  • Array.prototype.map(): Para convertir cada elemento de la array en una nueva array.
  • Además, el operador de propagación (…) se usa para representar un número variable de arrays que se pueden pasar como argumentos en el campo de parámetro de la función zip .

Ejemplo:

Javascript

const zip = (...arrays) => {
    const maxLength = Math.max(
        ...arrays.map(arr => arr.length));
  
    return Array.from({ length: maxLength })
    .map((_, i) => {
        return Array.from(
            {length: arrays.length }, 
            (_, j) => arrays[j][i]);
    });
};
console.log(
    zip(
        [1, "GFG", 0.1],
        [2, "GeeksForGeeks", 0.2],
        [3, "Geeks", 0.3],
        [4, "For", 0.4],
        [5, "Geeks", 0.5]
    )
);

Producción:

Ahora veamos cómo podemos implementar unzip :

  • Math.max(): Obtenga el subarreglo más largo en el arreglo.
  • Array.prototype.map(): convierte cada elemento de la array en una array.
  • Array.prototype.reduce() y Array.prototype.forEach(): Asigne los valores agrupados a arrays individuales.
  • Por último, Array.prototype.map() y el operador de propagación (…) se utilizan para aplicar el parámetro f en la función de descomprimir a cada grupo individual de elementos.

Ejemplo:

Javascript

const unzip = (arr, f) => arr.reduce(
    (a, myValue) => (myValue.forEach(
        (val, i) => a[i].push(val)), a),
    Array.from({
        length: Math.max(
            ...arr.map(myArr => myArr.length)),
    }).map(myArr => [])
)
    .map(v => f(...v));
console.log(
    unzip(
        [
            [1, 3, 5],
            [2, 6, 10],
            [3, 9, 15],
        ],
        (...arguments) => arguments
            .reduce((acc, j) => acc + j, 0)
    )
);

Producción:

Publicación traducida automáticamente

Artículo escrito por rajatsandhu2001 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *