1
resposta

Stringify

Olá !

Eu demorei uns minutos até pegar a logica do some dentro do filter hehe mas acredito que já esta claro, so restou uma dúvida

Como o nosso professor explicou sobre objetos que são instaciados com new possuem no backend espacos de mémorias diferentes precisamos transformar esses objetos declarados com new em objetos normais certo ? (qual o termo para aquilo que instaciamos com new, para poder diferenciar dos objetos com string, number e etc..?)

Então como solução fazemos um stringify nas nossas negociacoes dentro da lista agora se eu bem entendi pelo código, ele so faz stringify nas negociacoes de uma lista mas estamos comparando aquilo que esta já adicionado (que esta na view, no banco de dados com aquilo que estamos tentando importar não é ?) não deviamos fazer stringfy nos objetos das duas listas ?

Não sei se essa perguna tem algum sentido haha, eu retomei o curso após duas semanas então ainda estou me encontrando aqui no projeto

De todo jeito, obrigado pela atenção

Paris

1 resposta

Olá! Objetos criados com new ou através da forma literal ocupam espaços diferentes na memória e se você usar o operador == ou === para compará-los, mesmo que tenham o mesmo valor das propriedades, o JavaScript verificará se a variável aponta para o mesmo objeto em memória. Vejamos um exemplo simples:

const o1 = { nome: 'Flávio' };
const o2 = { nome: 'Flávio'};
o1 == o2; // é falso!

Isso já não acontece com strings e números criados na forma literal, pois a comparação é sobre o valor que eles armazenam e não a referência na memória. É por isso que o seguinte código funciona:

const s1 = 'Flávio';
const s3 = 'Flávio';
s1 == s3; // true

Então um truque é converter um objeto para uma string grande e, sendo string, o resultado da comparação com == funcionará:

const o1 = { nome: 'Flávio' };
const o2 = { nome: 'Flávio'};
JSON.stringify(o1) == JSON.stringify(o2); // true

Isso é interessante para um objeto com muitas propriedades. No meu exemplo, eu poderia ter feito simplesmente assim:

const o1 = { nome: 'Flávio' };
const o2 = { nome: 'Flávio'};
o1.nome == o2.nome; // true

Sucesso e bom estudo!