Introdução
Neste laboratório, exploraremos a função pullBy() em JavaScript. Esta função permite filtrar valores específicos de um array com base em uma função iteradora fornecida. Ao final deste laboratório, você entenderá como usar pullBy() para manipular arrays e filtrar efetivamente valores indesejados.
Como Remover Valores de um Array com Base em uma Função Fornecida
Para começar a praticar a codificação, abra o Terminal/SSH e digite node.
A função pullBy muta o array original, filtrando os valores especificados com base em uma função iteradora fornecida. Veja como funciona:
- Verifique se o último argumento fornecido é uma função.
- Use
Array.prototype.map()para aplicar a função iteradorafna todos os elementos do array. - Use
Array.prototype.filter()eArray.prototype.includes()para remover os valores que não são necessários. - Defina
Array.prototype.lengthpara redefinir o comprimento do array passado para0. - Use
Array.prototype.push()para repovoá-lo apenas com os valores removidos.
Aqui está o 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));
};
E aqui está um exemplo de como usá-lo:
var myArray = [{ x: 1 }, { x: 2 }, { x: 3 }, { x: 1 }];
pullBy(myArray, [{ x: 1 }, { x: 3 }], (o) => o.x); // myArray = [{ x: 2 }]
Observe que, neste exemplo, estamos removendo todos os elementos com uma propriedade x de 1 ou 3. O myArray resultante conterá apenas o elemento com uma propriedade x de 2.
Resumo
Parabéns! Você concluiu o laboratório "Remover Valores de Array com Base em Função". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.