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:
- Abra la Terminal/SSH y escriba
nodepara comenzar a practicar la codificación. - Aplique la función
fnproporcionada a cada valor en la matrizarrdada. - Divida la matriz cada vez que
fndevuelva un nuevo valor. - Utilice
Array.prototype.reduce()para crear un objeto acumulador que contenga la matriz resultante y el último valor devuelto porfn. - Utilice
Array.prototype.push()para agregar cada valor enarra la partición adecuada en la matriz acumulador. - 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.