Introdução
Neste laboratório, exploraremos como inverter os pares chave-valor de um objeto sem mutar o objeto original. Usaremos o método Object.keys() e Array.prototype.reduce() para inverter o objeto. Adicionalmente, aprenderemos como aplicar uma função às chaves invertidas e retornar um array de chaves responsáveis por gerar o valor invertido.
Função para Inverter um Objeto
Para inverter os pares chave-valor de um objeto sem alterar o objeto original, use a função invertKeyValues.
Chame a função digitando
invertKeyValues(obj, fn)no Terminal/SSH, ondeobjé o objeto a ser invertido efné uma função opcional a ser aplicada à chave invertida.Os métodos
Object.keys()eArray.prototype.reduce()são usados para criar um novo objeto com pares chave-valor invertidos e, se uma função for fornecida, ela é aplicada a cada chave invertida.Se
fnfor omitida, a função retorna apenas as chaves invertidas sem qualquer função aplicada a elas.A função retorna um objeto com cada valor invertido sendo um array de chaves responsáveis por gerar o valor invertido.
const invertKeyValues = (obj, fn) =>
Object.keys(obj).reduce((acc, key) => {
const val = fn ? fn(obj[key]) : obj[key];
acc[val] = acc[val] || [];
acc[val].push(key);
return acc;
}, {});
Exemplo de uso:
invertKeyValues({ a: 1, b: 2, c: 1 }); // { 1: [ 'a', 'c' ], 2: [ 'b' ] }
invertKeyValues({ a: 1, b: 2, c: 1 }, (value) => "group" + value);
// { group1: [ 'a', 'c' ], group2: [ 'b' ] }
Resumo
Parabéns! Você concluiu o laboratório Inverter Objeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.