Introducción
En este laboratorio, exploraremos la función pullBy() en JavaScript. Esta función nos permite filtrar valores específicos de un array basados en una función iteradora dada. Al final de este laboratorio, entenderás cómo usar pullBy() para manipular arrays y filtrar efectivamente valores no deseados.
Cómo extraer valores de un array basado en una función dada
Para comenzar a practicar la codificación, abre la Terminal/SSH y escribe node.
La función pullBy muta el array original filtrando los valores especificados basados en una función iteradora dada. Aquí cómo funciona:
- Verifica si el último argumento proporcionado es una función.
- Usa
Array.prototype.map()para aplicar la función iteradorafna todos los elementos del array. - Usa
Array.prototype.filter()yArray.prototype.includes()para extraer los valores que no se necesitan. - Establece
Array.prototype.lengthpara restablecer la longitud del array pasado a0. - Usa
Array.prototype.push()para volver a poblarlo solo con los valores extraídos.
Aquí está el código:
const pullBy = (arr, ...args) => {
const length = args.length;
let fn = length > 1 ? args[length - 1] : undefined;
fn = typeof fn == "function" ? (args.pop(), fn) : undefined;
let argState = (Array.isArray(args[0]) ? args[0] : args).map((val) =>
fn(val)
);
let pulled = arr.filter((v, i) => !argState.includes(fn(v)));
arr.length = 0;
pulled.forEach((v) => arr.push(v));
};
Y aquí está un ejemplo de cómo usarlo:
var myArray = [{ x: 1 }, { x: 2 }, { x: 3 }, { x: 1 }];
pullBy(myArray, [{ x: 1 }, { x: 3 }], (o) => o.x); // myArray = [{ x: 2 }]
Tenga en cuenta que en este ejemplo, estamos extrayendo todos los elementos con una propiedad x de 1 o 3. El myArray resultante solo contendrá el elemento con una propiedad x de 2.
Resumen
¡Felicidades! Has completado el laboratorio de Extracción de Valores de un Array Basado en una Función. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.