J'utilise JSON.stringify dans mon application react redux. Quel est le but de JSON.stringify dans le contexte suivant? Même sans JSON.stringify, cela fonctionne, mais on m'a pourtant conseillé d'utiliser JSON.stringify.

if (JSON.stringify(earlyBird.eBird) !== JSON.stringify(prevProps.earlyBird.eBird)) {
0
Bhagya Perera 2 juin 2020 à 08:26

7 réponses

Meilleure réponse

Commençons par le commencement

JSON.stringify convertit les objets en chaînes.

Maintenant si vous deux objets

Comme

const obj1 = {
   a: 10
}

const obj2 = {
   a: 10
}

Maintenant tu veux les comparer

 obj1 === obj2; // returns false

Mais

JSON.stringify(obj1) === JSON.stringify(obj2); // returns true

Maintenant, pourquoi votre code fonctionne

Parce que vous comparez le même objet

0
Kenny 2 juin 2020 à 05:31

Ce n'est en fait pas recommandé car JavaScript ne garantit pas l'ordre des clés. Exemple entrez la description de l'image ici

Utilisez plutôt:

Equal de Deep.

isEqual de Lodash.

Égal.

Pour plus de détails, reportez-vous à pourquoi-vous-ne-devriez-pas-utiliser-json-stringify

0
SoftwareEnggUmar 2 juin 2020 à 05:43

En effet, la comparaison js fonctionne Comparisor

  • Deux objets distincts ne sont jamais égaux pour les comparaisons strictes ou abstraites.
  • Deux chaînes sont strictement égales lorsqu'elles ont la même séquence de caractères, la même longueur et les mêmes caractères aux positions correspondantes.

Dans l'exemple ci-dessous, vous pouvez voir que les objets avec les mêmes attributs ne renverront pas true, mais les convertir en chaînes fait l'affaire. Cependant, gardez à l'esprit que l'ordre est important et que si les attributs ne sont pas dans le même ordre, l'égalité ne fonctionnera pas comme prévu.

console.log({ x: 5, y:6 } === { x:5, y:6 });
console.log(JSON.stringify({ x: 5, y: 6 }) === JSON.stringify({ x: 5, y: 6 }));
console.log(JSON.stringify({ y: 6, x: 5 }) === JSON.stringify({ x: 5, y: 6 }));
0
DonatasD 2 juin 2020 à 05:35

Il est utilisé pour transformer les objets javascript en leur équivalent chaîne JSON, c'est-à-dire

typeof(JSON.stringify(['Hello'])); //string
typeof(['Hello']); //object
0
David Kabii 2 juin 2020 à 05:30

Si votre prevProps.earlyBird.eBird est une chaîne, JSON.stringify n'est absolument pas nécessaire. Cependant, s'il s'agit d'un objet, alors pour comparer deux objets en JavaScript, vous devez d'abord les stringify. Puisque vous avez dit que sans JSON.stringify cela fonctionne, cela indique simplement que les deux sont des chaînes et que JSON.stringify n'est donc pas nécessaire ici.

0
ABGR 2 juin 2020 à 05:44

En termes très simples, Stringify convertit les objets en chaînes. Votre code fonctionne car c'est finalement la même chose que vous comparez dans la condition if. Reportez-vous à ce https: //developer.mozilla. org / en-US / docs / Web / JavaScript / Reference / Global_Objects / JSON / stringify

0
Gagan Deep 2 juin 2020 à 05:29

Il est utilisé pour convertir les objets JSON en chaînes.

0
Avijit Acharjee 2 juin 2020 à 05:34