Particionamiento de arrays con JavaScript Reduce

Beginner

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

Introducción

En este laboratorio, exploraremos cómo particionar una matriz basada en una función proporcionada utilizando JavaScript. Utilizaremos el método Array.prototype.reduce() para acumular los valores particionados en una matriz mientras verificamos los cambios en la salida de la función proporcionada. Al final de este laboratorio, tendrás una comprensión sólida de cómo particionar matrices en JavaScript.

Algoritmo para particionar una matriz

Para particionar una matriz, siga estos pasos:

  1. Abra la Terminal/SSH y escriba node para comenzar a practicar la codificación.
  2. Aplique la función fn proporcionada a cada valor en la matriz arr dada.
  3. Divida la matriz cada vez que fn devuelva un nuevo valor.
  4. Utilice Array.prototype.reduce() para crear un objeto acumulador que contenga la matriz resultante y el último valor devuelto por fn.
  5. Utilice Array.prototype.push() para agregar cada valor en arr a la partición adecuada en la matriz acumulador.
  6. Devuelva la matriz resultante.

A continuación, se muestra la implementación del código:

const partitionBy = (arr, fn) =>
  arr.reduce(
    ({ res, last }, v, i, a) => {
      const next = fn(v, i, a);
      if (next !== last) res.push([v]);
      else res[res.length - 1].push(v);
      return { res, last: next };
    },
    { res: [] }
  ).res;

Uso de ejemplo:

const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]

Resumen

¡Felicitaciones! Has completado el laboratorio de partición de matrices. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.