Jak porównać dwie tablice w JavaScript

Jak porównać dwie tablice w JavaScript
Aby porównać dwie zmienne w JavaScript, używamy operatora równości, który jest dwa typy. Pierwszy to podwójny równy „==”, który sprawdza dwie wartości operandów, a druga to potrójna równa się „===”, która sprawdza wartość, a także typ danych operandów.

Nie możemy jednak użyć operatora równości do porównywania tablic. Powodem tego jest to, że tablica JavaScript jest typem obiektu, a obiekty są porównywane na podstawie odniesień zmiennych, a nie na wartościach.

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
konsola.log (array1 === array2); // FAŁSZ
konsola.log (array1 == array2); // FAŁSZ

W powyższym kodzie zainicjowaliśmy dwie tablice, które są takie same. Jednak na wyjściu zobaczymy FAŁSZ:

Dlatego w celu rozwiązania tego problemu w tym poście nauczymy się kilku sposobów porównywania dwóch tablic w JavaScript.

Metoda 1: ToString ()

ToString () Metoda jest wbudowaną metodą JavaScript, która konwertuje dowolny typ danych, taki jak liczba całkowita na ciąg, a następnie zwraca ten numer całkowitą jako ciąg. Możemy zastosować ToString () Metoda na tablicy, która przekonwertuje tablicę na ciąg, a następnie porównać ciąg z drugim ciągiem.

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
const array3 = [4, 5, 6];
konsola.log (tablica1.ToString () == Array2.ToString ()); // PRAWDA
konsola.log (tablica1.ToString () === Array3.ToString ()); // FAŁSZ

W powyższym kodzie zainicjowaliśmy trzy tablice, a następnie zastosowaliśmy ToString () Metoda na tablicach i najpierw porównała tablicę 1 z Array2 i zwróciła wynik w konsoli. W ten sam sposób porównaliśmy Array1 do Array3 i konsoli rejestrowanie wyniku:

Z powyższego wyjścia widzimy, że „Array1” jest równe „array2”, ale „Array1” nie jest równe „tablice3”.

Metoda 2: Zastosowanie do pętli

Przejrzyjmy inną metodę, w której ręcznie sprawdzimy elementy dwóch tablic, a następnie wygenerujemy wyjście. W tym celu pozwól, że najpierw pokażę ci kod:

funkcja porównawcza ()
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
// Najpierw sprawdź długość obu tablic
// Jeśli długość nie jest równa, tablice są różne
if (array1.długość!= array2.długość)
zwrócić „false”;
w przeciwnym razie
// Sprawdź każdy element dwóch tablic
dla (var i = 0; iif (tablica1 [i]!= array2 [i])
zwrócić „false”;
zwrócić „true”;


konsola.log (ComparSearrays ()); // FAŁSZ

W powyższym kodzie zdefiniowaliśmy funkcję, w której najpierw zainicjowaliśmy dwie tablice. Następnie ustawiamy warunek, aby sprawdzić długość tablic.

Jeśli długość dwóch tablic nie jest równa, oznacza to, że dwie tablice są różne, stąd funkcja zwróci false.

Jeśli jednak długość jest taka sama, ustawiliśmy pętlę, w której sprawdzimy każdy element obu tablic. Jeśli choć jeden element nie jest równy, zostanie zwrócony Fałsz. Jeśli wszystkie elementy obu tablic są dopasowane, powróci to prawda.

Dane wyjściowe powyższego kodu pokazano poniżej:

Jeśli nieco zmienimy kod, podając dwie tablice, które są równe E.G:

funkcja porównawcza ()
const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
// Sprawdź długość obu tablic
// Jeśli długość nie jest równa, tablice są różne
if (array1.długość!= array2.długość)
zwrócić „false”;
w przeciwnym razie
// Sprawdź każdy element dwóch tablic
dla (var i = 0; iif (tablica1 [i]!= array2 [i])
zwrócić „false”;
zwrócić „true”;


konsola.log (ComparSearrays ()); // PRAWDA

Wygenerowane zostanie następujące dane wyjściowe:

Wniosek

Nie możemy porównać dwóch tablic w JavaScript za pomocą operatora równości == lub ===, ponieważ tablice JavaScript są obiektami, a zatem odniesienie jest sprawdzane, a nie wartości. W tym celu zdefiniowaliśmy dwie metody w tym poście, aby porównać tablice. W pierwszej metodzie zastosowaliśmy wbudowaną metodę ToString () gdzie najpierw przekonwertowaliśmy tablice na ciąg, a następnie sprawdziliśmy dwa zwrócone ciągami za pomocą operatora równości. W drugiej metodzie najpierw ręcznie sprawdziliśmy długość, a następnie porównaliśmy wszystkie elementy dwóch tablic jeden po drugim za pomocą pętli dla.