Introdução
Neste laboratório, exploraremos como "unflatten" (desanexar) um objeto com caminhos para chaves em JavaScript. Usaremos os métodos aninhados Array.prototype.reduce() e String.prototype.split() para dividir cada chave com um delimitador de ponto e adicionar objetos em relação às chaves. Ao final deste laboratório, você terá uma sólida compreensão de como converter eficientemente um objeto plano em um objeto aninhado.
Como "Unflatten" (Desanexar) um Objeto em JavaScript
Para "unflatten" (desanexar) um objeto com caminhos para chaves em JavaScript, siga estes passos:
Abra o Terminal/SSH e digite
nodepara começar a praticar a codificação.Use
Array.prototype.reduce()aninhado para converter o caminho plano em um nó folha.Use
String.prototype.split()para dividir cada chave com um delimitador de ponto eArray.prototype.reduce()para adicionar objetos em relação às chaves.Se o acumulador atual já contiver um valor em relação a uma chave específica, retorne seu valor como o próximo acumulador.
Caso contrário, adicione o par chave-valor apropriado ao objeto acumulador e retorne o valor como o acumulador.
Aqui está o código para a função unflattenObject:
const unflattenObject = (obj) =>
Object.keys(obj).reduce((res, k) => {
k.split(".").reduce(
(acc, e, i, keys) =>
acc[e] ||
(acc[e] = isNaN(Number(keys[i + 1]))
? keys.length - 1 === i
? obj[k]
: {}
: []),
res
);
return res;
}, {});
Você pode usar a função unflattenObject para "unflatten" (desanexar) um objeto em JavaScript:
unflattenObject({ "a.b.c": 1, d: 1 }); // { a: { b: { c: 1 } }, d: 1 }
unflattenObject({ "a.b": 1, "a.c": 2, d: 3 }); // { a: { b: 1, c: 2 }, d: 3 }
unflattenObject({ "a.b.0": 8, d: 3 }); // { a: { b: [ 8 ] }, d: 3 }
Resumo
Parabéns! Você concluiu o laboratório de "Unflatten Object". Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.