Sådan sammenlignes arrays i JavaScript – mysteriet afsløret!

I JavaScript skal vi for at sammenligne to arrays kontrollere, at længden af ​​begge arrays er den samme, at objekterne i det er af samme type, og at hvert element i et array er lig med modstykket i et andet array.

I denne artikel belyser vi ' Sådan sammenlignes arrays i JavaScript ”.

Arrays skal muligvis sammenlignes for at bestemme ækvivalens. Arrays i JavaScript er anderledes end arrays i C eller C++.



Arrays kan have et tal eller et tekstindeks i JavaScript. Det er nemt at bruge det nummererede indeks, at krydse og sammenligne arrays, men det er kompliceret i tekstindekser.

Lad os se et par af de mulige måder at sammenligne arrays i forskellige scenarier:

  • Arrays har et nummereret indeks og er lige lange.
  • Arrays har et nummereret indeks og er ikke lige lange.
  • Arrays har et tekstindeks og er lige lange.
  • Arrays har et tekstindeks og er ikke lige lange.

Arrays har et talindeks og er lige lange

For eksempel har vi to arrays som nedenfor, og vi ønsker at sammenligne disse arrays.

var Array1 = {"1", "2", "3"}

var Array2 = {"1", "2", "4"}

Ovenstående arrays har et lille antal elementer, som er tre (3). Det er lettere at bestemme ækvivalens for det lille array.

Men for længere arrays er vi nødt til at finde en metode til at finde det. JavaScript kommer med en indbygget længde metode, der kan bruges med arrays og objekter til at finde deres længde.

Denne længde kan sammenlignes med en betinget konstruktion, fortrinsvis en hvis udmelding. Dette ville være noget som dette:

if(Array1.length == Array2.length){

    // do something;

}

Det er nødvendigt at sammenligne længden, da vi har at gøre med tilfældet med Arrays med samme størrelse. Hvis arrays længde er ens, kan krydselementer af arrays let kontrolleres ved hjælp af en sløjfe, fortrinsvis en for sløjfe.

Dette ville være noget som dette:

for....

{

    document.write("Array 1 element " + Array1[i] + "is equal to
"+ "Array 2 element " + Array2[i]);

}

Dette vil blot udsende nogle tekstudsagn, der sammenligner krydselementerne. Dette kan ændres til at udskrive noget tekst som 'Arrays er ens' for at gøre det enkelt.

Der kunne også være en andet del, der kan håndtere tilfælde af, at arrays ikke er ens.

Arrays har et nummereret indeks og er ikke lige lange

Som vi har nævnt i den anden del af det forrige scenario, er Arrays muligvis ikke lige lange. I et sådant tilfælde kan Array 1 være lig med Array 2, eller men Array 2 er muligvis ikke det.

For eksempel har Array 1 tre elementer, som vi tidligere har brugt, men Array 2 har 4 elementer. Array 2 har alle elementerne i Array 1, men det gælder ikke for Array 1.

I et sådant tilfælde kan vi sammenligne hvert element i et array med hvert element i det andet array og en anden vej rundt.

Men i dette tilfælde kan kun en matrix være lig med den anden eller ej, men begge kan ikke være ens, da de har forskellige længder. For at sammenligne arrays på denne måde kan vi bruge nestet for loop, som kunne være noget som dette:

for...

    for...

{

    {

    	if(Array[i] == Array[j])

    	{
   		 //do something

   		         }

    }

}

Vi skal bruge et hvis sætning inden for de indlejrede sløjfer, da vi har at gøre med arrays af forskellige størrelser.

Arrays har et tekstindeks og er lige lange

Tekstindekserede arrays er ikke en god praksis. Det komplicerer yderligere opgaven med selv at sammenligne arrays af længde såvel som uens længde. Dette dækker også 'Arrays har et tekstindeks og ikke ens'.

Samme Længde, Hver Værdi er Lige

En metode til at sammenligne var1 og var2 er at kontrollere, om hver værdi af var1 er strengt lig med den tilsvarende værdi af var2.

Dette fungerer godt, hvis alle elementerne i arrays er primitive i modsætning til objekter. Slutningen af ​​operationen returnerer en boolesk værdi. Her er et eksempel:

const var1 = [1, 2, 3];

const var2 = [4, 5, 6];

const var3 = [1, 2, 3];


function arrayEquals(var1, var2) {

  return Array.isArray(var1) && Array.isArray(var2) &&
var1.length === var2.length && var1.every((val, index) => val
=== var2[index]);

}


arrayEquals(var1, var2);

arrayEquals(var1, var3);

Outputtet skal se sådan ud:
falsk sandt

Brug af metoden JSON.stringify().

JavaScript giver en funktion JSON .stringify() for at konvertere et objekt eller array til JSON-streng. Ved at konvertere til JSON-streng kan vi direkte kontrollere, om strengene er ens eller ej.

Imidlertid JSON .stringify() metode konverterer et array til en JSON-streng. Tag et kig på nedenstående program for at forstå konceptet godt.

function compareArrays(arr1, arr2){

    // compare arrays

    const result = JSON.stringify(arr1) == JSON.stringify(arr2)

    
// if result is true

    if(result){

   	 console.log('The arrays have the same elements.');

    }

    else{

   	 console.log('The arrays have different elements.');

    }

}

const array1 = [1, 3, 5, 8];

const array2 = [1, 3, 5, 8];

compareArrays(array1, array2);

Ovenstående program vil sammenligne de givne arrays og producere et output. Arrays har de samme elementer b fordi vi sætter den samme værdi i begge arrays.

I dette blogindlæg fortæller vi har lært 'Hvordan man sammenligner arrays i JavaScript' og har set på nogle af de tilgængelige metoder til at gøre det, herunder ligetil eksempelkode.