Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Substituir keys objeto

Se eu tivesse um objeto especificando as keys para substituir. Exemplo:

ar parametros = {"1":"Nome", "2":"Idade", "3":"Cidade"}

var obj = {"1":"Rafael", "2":"Idade", "3":"Cidade"}

var obj = {"Nome":"Rafael", "Idade":"21", "Cidade":"SP"}

Como que eu percorro o objeto, comparo e substituo.

6 respostas

O pulo do gato esta em Object.keys.

let pessoa = {
    nome: 'Flávio',
    profissao: 'Cangaceiro JavaScript' 
};

Object.keys(pessoa).forEach(key => {
    console.log(`chave "${key}"`, `valor "${pessoa[key]}"`);
});

Agora o restante é aplicar uma lógica de programação básica para você fazer o que deseja.

Sucesso e bom estudo meu aluno.

Ah, tem outra dica. Se os objetos possuem as mesmas chaves, você pode fazer assim:

let objeto = {
    nome: 'Flávio',
    profissao: 'Cangaceiro JavaScript' 
};

let update = {
    nome: 'Rafael'
}

Object.assign(objeto, update);

console.log(objeto); // mudou o nome para Rafael

Bem elegante, não?

Sucesso e bom estudo meu aluno!

Mas como faço o update nas keys e não no value ?

Não estou estendendo muito o que você quer fazer, aliás é meio estranho alguém querer alterar a key de um objeto. Então vou focar apenas na sintaxe.

Use uma lógica de programação básica que você já domina. Por exemplo, guarde o valor antigo, apague a propriedade e adicione uma nova.

Você pode apagar a propriedade de um objeto assim:

let obj = { nome: 'Flávio' };
delete obj.nome;

Porém, como você quer alterar as keys, porque não cria um objeto novo do zero copiado cada valor da key que você não quer para nova?

Um exemplo, o mais simples possível:

var obj = {"1":"Rafael", "2":"Idade", "3":"Cidade"};

var obj2  = {
     nome: obj['1'], 
     idade: obj['2'], 
     cidade: obj['3']
};
console.log(obj2);

Mas o fato do seu objeto ter key numérica existe que há algum problema no código que gerou o objeto. Mas enfim, essa é uma solução.

O restante é você aplicar lógica de programação básica mesmo de acordo com o grau de refinamento que você quer aplicar.

solução!

Segue um exemplo, aplicando uma simples lógica de programação. É claro para que ela seja aplicada, você precisa saber os novos detalhes da sintaxe da linguagem que lhe passei.

let parametros = {"1":"Nome", "2":"Idade", "3":"Cidade"}

var objeto = {"1":"Rafael", "2":"Idade", "3":"Cidade"}

Object.keys(parametros).forEach(key => {
   // pega o valor que será a nova chave
    let newKey = parametros[key];
   // cria dinamicamente a nova chave com o valor antigo
    objeto[newKey] = objeto[key];
    // apaga a chave antiga
    delete objeto[key];
});

console.log(objeto);

Só um detalhe. Normalmente o nome de chaves são em minúsculo e não começam com número. Com disse, tem que ver quem esta gerando esses dados desse jeito.

Sucesso e bom estudo!