Introdução
Neste laboratório, exploraremos como usar recursão para remover profundamente todos os valores falsos de um objeto ou array em JavaScript. Criaremos uma função que recebe um objeto ou array como entrada e retorna um novo objeto ou array compactado com apenas valores verdadeiros (truthy). Essa técnica pode ser útil para limpeza e simplificação de dados em várias aplicações de programação.
Algoritmo para Compactar Objetos
Para remover profundamente todos os valores falsos de um objeto ou array, use o seguinte algoritmo:
- Use recursão para chamar a função
compactObject()em cada objeto ou array aninhado. - Inicialize os dados iteráveis usando
Array.isArray(),Array.prototype.filter()eBoolean(). Isso é feito para evitar arrays esparsos. - Use
Object.keys()eArray.prototype.reduce()para iterar sobre cada chave com um valor inicial apropriado. - Use
Boolean()para determinar a veracidade (truthiness) do valor de cada chave e adicione-o ao acumulador se for verdadeiro (truthy). - Use
typeofpara determinar se um determinado valor é umobjecte chame a função novamente para compactá-lo profundamente.
Aqui está o código para a função compactObject():
const compactObject = (val) => {
const data = Array.isArray(val) ? val.filter(Boolean) : val;
return Object.keys(data).reduce(
(acc, key) => {
const value = data[key];
if (Boolean(value))
acc[key] = typeof value === "object" ? compactObject(value) : value;
return acc;
},
Array.isArray(val) ? [] : {}
);
};
Para usar esta função, passe um objeto ou array como argumento para compactObject(). A função retornará um novo objeto ou array com todos os valores falsos removidos.
Por exemplo:
const obj = {
a: null,
b: false,
c: true,
d: 0,
e: 1,
f: "",
g: "a",
h: [null, false, "", true, 1, "a"],
i: { j: 0, k: false, l: "a" }
};
compactObject(obj);
// { c: true, e: 1, g: 'a', h: [ true, 1, 'a' ], i: { l: 'a' } }
Resumo
Parabéns! Você concluiu o laboratório de Compactação de Objetos. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.