Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

106
Visualizações
Swap object values for few properties in javascript

current object

const obj = {
  k1: v1,
  k2: v2,
  x1: v3,
  x2: v4,
  y: {
    z1: v5,
    z2: v6
  }
}

expected object

const obj = {
  k1: v2,
  k2: v1,
  x1: v4,
  x2: v3,
  y: {
    z1: v6,
    z2: v5
  }
}

Have tried individual swap method for each key and also tried below object assign way

const obj = {
  k1: 'v1',
  k2: 'v2',
  x1: 'v3',
  x2: 'v4',
  y: {
    z1: 'v5',
    z2: 'v6'
  }
}
Object.assign(obj, {
  k1: obj.k2,
  k2: obj.k1,
  x1: obj.x2,
  x2: obj.x1,
  y: {
    z1: obj.y.z2,
    z2: obj.y.z1,
  }
});

Object.keys(obj).forEach(
  (k) =>
    obj[k] === null ||
    (obj[k] === undefined && delete obj[k])
);

console.log(obj)

for some cases once object assign is executed undefined will come for x1 or x2 key because v3 or v4 are not mandatory. so after converting trying to remove the undefined keys from object

Expecting a optimized and better solution for it

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Your solution was accession undefined keys from obj such as obj.k4 and obj.k3 also they were assigning to wrong keys aswell k3 and k4.

Your Corrected Solution

const obj = {
  k1: 'v1',
  k2: 'v2',
  x1: 'v3',
  x2: 'v4',
  y: {
    z1: 'v5',
    z2: 'v6'
  }
};
Object.assign(obj, {
  k1: obj.k2,
  k2: obj.k1,
  x1: obj.x2,
  x2: obj.x1,
  y: {
    z1: obj.y.z2,
    z2: obj.y.z1,
  }
});
console.log(obj);

You can also make use of spread operator for achieving the same.

let obj = {
  k1: 'v1',
  k2: 'v2',
  x1: 'v3',
  x2: 'v4',
  y: {
    z1: 'v5',
    z2: 'v6'
  }
};
obj = {...obj, ...{
  k1: obj.k2,
  k2: obj.k1,
  x1: obj.x2,
  x2: obj.x1,
  y: {
    z1: obj.y.z2,
    z2: obj.y.z1,
  }
}}
console.log(obj);

about 4 years ago · Juan Pablo Isaza Relatório

0

You can write a method to remove the undefined:

const clean = o => JSON.parse(JSON.stringify(o))
  
const obj = {
  k1: 'v1',
  k2: 'v2',
  x1: 'v3',
  x2: 'v4',
  y: {
    z1: 'v5',
    z2: 'v6',
  },
}

Object.assign(obj, {
  k1: obj.k2,
  k2: obj.k1,
  k3: obj.k4,
  k4: obj.k3,
  y: {
    z1: obj.v6,
    z2: obj.v5,
  },
})

console.log('obj:', obj)
console.log('clean object:', clean(obj))

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda