Hvordan sammenligne to matriser i JavaScript

Hvordan sammenligne to matriser i JavaScript
For å sammenligne to variabler i JavaScript bruker vi likestillingsoperatøren som er av to typer. Den første er den doble tilsvarer “==” som sjekker to operandverdier, og den andre er trippel tilsvarer “===” som sjekker verdien så vel som datatypen til operandene.

Vi kan imidlertid ikke bruke likestillingsoperatøren for å sammenligne matriser. Årsaken bak dette er at JavaScript -matrise er en objekttype og objekter sammenlignes basert på referansene til variablene og ikke på verdiene.

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
konsoll.Logg (Array1 === Array2); // falsk
konsoll.Logg (Array1 == Array2); // falsk

I koden ovenfor har vi initialisert to matriser som er de samme. Imidlertid vil vi i utgangen se falsk:

For å løse dette problemet, vil vi derfor lære et par måter å sammenligne to matriser i JavaScript.

Metode 1: ToString ()

De toString () Metode er en innebygd metode for JavaScript som konverterer alle datatype som heltall til en streng og deretter returnerer det heltallet som en streng. Vi kan bruke toString () Metode på en matrise, som vil konvertere matrisen til en streng og deretter sammenligne strengen med den andre strengen.

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
const array3 = [4, 5, 6];
konsoll.Logg (Array1.toString () == Array2.toString ()); // sant
konsoll.Logg (Array1.toString () === Array3.toString ()); // falsk

I koden ovenfor initialiserte vi tre matriser og deretter brukte vi toString () Metode på matriser og sammenlignet først array1 til Array2 og returnerte resultatet i konsollen. På samme måte sammenlignet vi Array1 med Array3 og konsolllogg resultatet:

Fra output ovenfor kan vi se at "Array1" er lik "Array2", men "Array1" er ikke lik "Array3".

Metode 2: Bruker for loop

La oss gå gjennom en annen metode der vi manuelt vil sjekke elementene i to matriser og deretter generere en utgang. For dette formålet, la meg vise deg koden først:

funksjon sammenligning ()
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
// Først, sjekk lengden på begge matriser
// Hvis lengden ikke er lik, er matriser forskjellige
if (array1.lengde!= Array2.lengde)
returner "falsk";
annet
// sjekk hvert element av de to matriser
for (var i = 0; iif (array1 [i]!= Array2 [i])
returner "falsk";
returnere "sant";


konsoll.logg (sammenligning ()); // falsk

I koden ovenfor har vi definert en funksjon der vi initialiserte to matriser først. Etterpå setter vi en betingelse for å sjekke lengden på matriserne.

Hvis de to matrisens lengde ikke er lik, betyr det at de to matriser er forskjellige, og derfor vil funksjonen komme tilbake falsk.

Imidlertid, hvis lengden er den samme, har vi satt en for loop der vi vil sjekke hvert element av begge matriser. Hvis til og med ett element ikke er likt, vil det bli returnert, vil bli returnert. Hvis alle elementene i begge matriser blir matchet, vil det returnere sant.

Utgangen fra ovennevnte kode er vist nedenfor:

Hvis vi endrer koden litt ved å tilby to matriser som er like e.g:

funksjon sammenligning ()
const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
// sjekk lengden på begge matriser
// Hvis lengden ikke er lik, er matriser forskjellige
if (array1.lengde!= Array2.lengde)
returner "falsk";
annet
// sjekk hvert element av de to matriser
for (var i = 0; iif (array1 [i]!= Array2 [i])
returner "falsk";
returnere "sant";


konsoll.logg (sammenligning ()); // sant

Følgende utgang vil bli generert:

Konklusjon

Vi kan ikke sammenligne to matriser i JavaScript ved å bruke likestillingsoperatøren == eller === fordi JavaScript -matriser er objekter og derfor er referanse sjekket og ikke verdier. For dette formålet definerte vi to metoder i dette innlegget for å sammenligne matriser. I den første metoden brukte vi den innebygde metoden toString () Der vi konverterte matriser til streng først og deretter sjekket de to returnerte strengene ved hjelp av likestillingsoperatøren. I den andre metoden sjekket vi først manuelt lengden og sammenlignet deretter alle elementene i de to matriser en etter en ved å bruke for -loopen.