Introdução
Neste laboratório, exploraremos uma função JavaScript que achata um objeto, incluindo os caminhos para as chaves. A função utiliza recursão e Object.keys() combinados com Array.prototype.reduce() para converter cada nó folha em um nó de caminho achatado. Ao final deste laboratório, você terá uma melhor compreensão de como manipular objetos JavaScript e achatá-los para facilitar o processamento de dados.
Achatar um Objeto
Para achatar um objeto com caminhos para as chaves, siga estes passos:
- Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação. - Use recursão para achatar o objeto.
- Use
Object.keys()combinado comArray.prototype.reduce()para converter cada nó folha em um nó de caminho achatado. - Se o valor de uma chave for um objeto, chame a função recursivamente com o
prefixapropriado para criar o caminho usandoObject.assign(). - Caso contrário, adicione o par chave-valor com o prefixo apropriado ao objeto acumulador.
- Omita o segundo argumento,
prefix, a menos que você queira que cada chave tenha um prefixo.
Aqui está um exemplo de implementação:
const flattenObject = (obj, prefix = "") =>
Object.keys(obj).reduce((acc, k) => {
const pre = prefix.length ? `${prefix}.` : "";
if (
typeof obj[k] === "object" &&
obj[k] !== null &&
Object.keys(obj[k]).length > 0
) {
Object.assign(acc, flattenObject(obj[k], pre + k));
} else {
acc[pre + k] = obj[k];
}
return acc;
}, {});
Você pode usar a função flattenObject desta forma:
flattenObject({ a: { b: { c: 1 } }, d: 1 }); // { 'a.b.c': 1, d: 1 }
Resumo
Parabéns! Você concluiu o laboratório de Achatamento de Objeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.