Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Stringify

No exemplo, o professor usa:

JSON.stringify(n1) == JSON.stringify(n2)        // --> true

Porém, com a expressão abaixo tenho o msm resultado e o código fica menos verboso:

n1.valueOf == n2.valueOf        // --> true

Então, gostaria de entender quais as vantagens de se usar o stringfy.

1 resposta
solução!

Olá, boa tarde.

A comparação que você está fazendo no valueOf não é dos valores armazenados em n1 e n2 . valueOf não é um propriedade e sim método. Deve ser chamado com (). O que você está comparando aí é a definição da função.

Se você colocar os () na comparação, como no exemplo abaixo, você vai comparar os objetos e o resultado vai false.

Veja o exempo abaixo:

let data1 = `[
  {
    "ticker": "MGLU3",
    "preco": "51.60"
  }
]`;

let data2 = `[
  {
    "ticker": "MGLU3",
    "preco": "51.60"
  }
]`;

var obj1 = JSON.parse(data1);
var obj2 = JSON.parse(data2);

obj1.valueOf == obj2.valueOf // Comparação da definição da função *valueOf*
//true

obj1.valueOf() == obj2.valueOf() //Comparação dos objetos obj1 e obj2
//false

JSON.stringify(obj1) == JSON.stringify(obj2) //Comparação dos valores dos objetos convertidos para string
//true

Espero ter ajudado. Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software