Jak porównywać obiekty w JavaScript

Jak porównywać obiekty w JavaScript
W JavaScript obiekt jest nieproszonym typem danych lub jednostką, która przechowuje wiele kolekcji danych z właściwościami. Porównanie liczb lub tekstów jest dość proste w JavaScript, ale trudniej jest porównać dwa obiekty. Ponieważ JavaScript może łatwo porównać dwa ciągi, przekonwertujemy obiekty na struny, a następnie przeprowadzimy operacje porównawcze.

Ten samouczek pokaże metody porównywania obiektów w JavaScript.

Jak porównywać obiekty w JavaScript?

Aby porównać obiekty w JavaScript, użyj „JSON.stringify ()" metoda. Korzystanie z JSON.metoda stringify (), wartość/obiekt jest konwertowany na ciąg JSON. Aby ustalić, czy oba obiekty są faktycznie równoważne, porównaj dwa wyjścia po użyciu JSON.stringify (), aby przekonwertować dwa obiekty na struny.

Składnia
Postępuj zgodnie z poniższą składnią do porównywania obiektów za pomocą JSON.Stringify () Metoda:

JSON.string (wartość)

JSON.Metoda stringify () przyjmuje tylko jeden parametr, czyli „wartość”, Który jest obiektem JavaScript, który ma zostać przekonwertowany na ciąg JSON.

Przykład 1: Porównaj obiekty z samymi właściwościami
Najpierw utwórz dwa obiekty o nazwie „Info” i „Informacja„Z tymi samymi właściwościami”nazwa" I "wiek”:

var info =
Nazwa: „Stephen”,
Wiek: 25

var Information =
Nazwa: „Stephen”,
Wiek: 25

Następnie porównaj te dwa obiekty za pomocą JSON.metoda stringify () z operatorem ścisłego równości. JSON.Metoda Stringify () przekształca obiekty w struny, a następnie porównuje powstałe struny za pomocą operatora ścisłego równości, który będzie porównywał zarówno jego typ, jak i wartość:

konsola.Log (JSON.stringify (info) === JSON.stringify (informacje));

Wyjście pokazuje „PRAWDA”To wskazuje, że oba obiekty są równe:

Przykład 2: Porównaj obiekty z samymi właściwościami, ale różnymi miejscami
W tym przykładzie najpierw dodaj właściwość „kontakt„W obiekcie„ Informacje ”:

var Information =
Nazwa: „Stephen”,
Kontakt: „2345667”,
Wiek: 25

Następnie porównaj obiekty „informacje" I "Informacja„Korzystanie z ścisłego operatora równości:

konsola.Log (JSON.stringify (info) === JSON.stringify (informacje));

Wyjście wyświetla się „FAŁSZ”Ponieważ umieszczenie właściwości obiektu nie jest takie same:

Tutaj pojawia się pytanie, dlaczego nie używamy operatora równości do porównywania obiektów zamiast JSON.metoda stringify ()? Postępuj zgodnie z poniższą sekcją.

Dlaczego obiekty nie są porównywane za pomocą operatora równości?

JavaScript oferuje dwie metody porównania, jedna jest porównywana przez wartości, a druga jest przeznaczona. Typy prymitywne (ciąg, liczby) są porównywane przez wartości.

Jak wiemy, luźny operator równości „==”Porównuje typy danych według wartości, a operator ścisłej równości„===”Porównuje prymitywne typy danych zarówno według ich typu, jak i wartości. Obiekty korzystające z operatorów porównawczych „==" I "===”Nie można porównać, ponieważ JavaScript porównuje obiekty na podstawie ich adresów, znane również jako porównanie przez odniesienie.

Sprawdźmy, czy obiekty nie są porównywane z operatorami równości (== I ===).

Przykład 1: Za pomocą operatora luźnego równości (==)
Tutaj porównamy oba obiekty „informacje" I "Informacja”To jest tworzone w poprzednim przykładzie, używając operatora luźnego równości (==):

konsola.log (informacje == Informacje)

Wyjście wyświetla się „FAŁSZ”Ponieważ obiekty są porównywane przez odniesienie:

Przykład 2: Korzystanie z operatora ścisłego równości (===)
Teraz porównamy oba obiekty za pomocą operatora ścisłego równości:

konsola.log (informacje === Informacje)

Wyjście

Jak widać, że operatorzy równości nie porównują obiektów, więc JavaScript pozwala porównać obiekty, przekształcając je w struny za pomocą „JSON.stringify ()" metoda.

Zapewniliśmy najprostsze rozwiązanie do porównywania obiektów w JavaScript.

Wniosek

Aby porównać obiekty w JavaScript, możesz użyć „JSON.stringify ()„Metoda, która najpierw przekonwertuje wartość/obiekt JavaScript na ciąg JSON, a następnie możesz porównać zwrócone ciągi z pomocą operatora Strict Equality. Jak wiadomo, JavaScript może łatwo porównać dwa ciągniki, ale trudno jest porównać dwa obiekty. Aby ustalić, czy oba obiekty są faktycznie równoważne, porównaj dwa wyjścia po użyciu JSON.stringify (), aby przekonwertować dwa obiekty na struny. W tym podręczniku wykazaliśmy metody porównywania obiektów w JavaScript.