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

210
Visualizações
Keeping references without modifying the state in javascript

I have this impure code that prints two equal messages

class P {
   constructor() {
        this.x  = 0
        this.y  = []
   }
}

const incrX = (p)   => { p.x = p.x + 1 ; return p }
const incrY = (p,q) => ( p.y.push(q)   ; return p }

const ps = [ new P() , new P() ]

const result = ps.map( (_,i) => i === 0 ? incrY(ps[i],ps[i+1]) : incrX(ps[i]) )

console.log( result[0].y[0] )
console.log( result[1] )

But using pure functions, the prints are not equal, because ps[0].y[0] keeps an old reference

class P {
   constructor() {
        this.x  = 0
        this.y  = []
   }
}

const incrX = (p)   => ({ ...p , x : p.x + 1 })
const incrY = (p,q) => ({ ...p , y: [ ...p.y , q ] })

const ps = [ new P() , new P() ]

const result = ps.map( (_,i) => i === 0 ? incrY(ps[i],ps[i+1]) : incrX(ps[i]) )

console.log( result[0].y[0] )
console.log( result[1] )

Is there an way to keep references using something similar to the pure version ? Maybe using an array that stores references to references, is this even possible in javascript ?

about 4 years ago · Juan Pablo Isaza
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