Πώς να συγκρίνετε συστοιχίες σε JavaScript – Το μυστήριο αποκαλύφθηκε!

Στη JavaScript, για να συγκρίνουμε δύο πίνακες πρέπει να ελέγξουμε ότι το μήκος και των δύο πινάκων είναι το ίδιο, τα αντικείμενα που υπάρχουν σε αυτόν είναι του ίδιου τύπου και κάθε στοιχείο σε έναν πίνακα είναι ίσο με το αντίστοιχο σε διαφορετικό πίνακα.

Σε αυτό το άρθρο, ρίχνουμε φως στο « Πώς να συγκρίνετε πίνακες σε JavaScript '.

Οι πίνακες μπορεί να χρειαστεί να συγκριθούν για τον προσδιορισμό της ισοδυναμίας. Οι πίνακες στο JavaScript είναι διαφορετικοί από τους πίνακες σε C ή C++.



Οι πίνακες μπορούν να έχουν έναν αριθμό ή ένα ευρετήριο κειμένου σε JavaScript. Η χρήση του αριθμημένου ευρετηρίου, η διέλευση και η σύγκριση πινάκων είναι εύκολη, αλλά είναι περίπλοκη στα ευρετήρια κειμένου.

Ας δούμε μερικούς από τους πιθανούς τρόπους συγκρίνετε πίνακες σε διαφορετικά σενάρια:

  • Οι πίνακες έχουν αριθμημένο δείκτη και είναι ίσοι σε μήκος.
  • Οι πίνακες έχουν αριθμημένο δείκτη και δεν είναι ίσοι σε μήκος.
  • Οι πίνακες έχουν ευρετήριο κειμένου και έχουν ίσο μήκος.
  • Οι πίνακες έχουν ευρετήριο κειμένου και όχι ίσο σε μήκος.

Οι πίνακες έχουν δείκτη αριθμών και είναι ίσοι σε μήκος

Για παράδειγμα, έχουμε δύο πίνακες όπως παρακάτω, και θέλουμε να συγκρίνουμε αυτούς τους πίνακες.

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

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

Οι παραπάνω πίνακες έχουν μικρό αριθμό στοιχείων, που είναι τρία (3). Ο προσδιορισμός της ισοδυναμίας για τον μικρό πίνακα είναι ευκολότερος.

Αλλά για μεγαλύτερους πίνακες, πρέπει να βρούμε κάποια μέθοδο για να τον βρούμε. Το JavaScript διαθέτει ενσωματωμένο μήκος μέθοδος που μπορεί να χρησιμοποιηθεί με πίνακες και αντικείμενα για να βρεθεί το μήκος τους.

Αυτό το μήκος μπορεί να συγκριθεί χρησιμοποιώντας μια υπό όρους κατασκευή κατά προτίμηση ένα αν δήλωση. Αυτό θα ήταν κάπως έτσι:

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

    // do something;

}

Η σύγκριση του μήκους είναι απαραίτητη καθώς έχουμε να κάνουμε με Πίνακες ίσου μεγέθους. Εάν το μήκος των πινάκων είναι ίσο, τότε τα εγκάρσια στοιχεία των πινάκων θα μπορούσαν εύκολα να ελεγχθούν χρησιμοποιώντας έναν βρόχο κατά προτίμηση ένα for βρόχος.

Αυτό θα ήταν κάπως έτσι:

for....

{

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

}

Αυτό θα παράγει απλώς ορισμένες δηλώσεις κειμένου που συγκρίνουν τα διασταυρούμενα στοιχεία. Αυτό θα μπορούσε να τροποποιηθεί για να παράγει κάποιο κείμενο όπως 'Οι πίνακες είναι ίσοι' για να είναι απλό.

Θα μπορούσε επίσης να υπάρχει ένα αλλού μέρος που μπορεί να χειριστεί την περίπτωση των πινάκων που δεν είναι ίσοι.

Οι πίνακες έχουν αριθμημένο δείκτη και δεν είναι ίσοι σε μήκος

Όπως έχουμε αναφέρει στο άλλο μέρος του προηγούμενου σεναρίου, οι Πίνακες μπορεί να μην είναι ίσοι σε μήκος. Σε μια τέτοια περίπτωση, ο πίνακας 1 μπορεί να είναι ίσος με τον πίνακα 2 ή ο πίνακας 2 μπορεί να μην είναι.

Για παράδειγμα, ο πίνακας 1 έχει τρία στοιχεία όπως έχουμε χρησιμοποιήσει προηγουμένως, αλλά ο πίνακας 2 έχει 4 στοιχεία. Ο Πίνακας 2 έχει όλο το στοιχείο του Πίνακα 1, αλλά αυτό δεν ισχύει για τον Πίνακα 1.

Σε μια τέτοια περίπτωση μπορούμε να συγκρίνουμε κάθε στοιχείο ενός πίνακα με κάθε στοιχείο του άλλου πίνακα και αντίστροφα.

Αλλά σε αυτήν την περίπτωση, μόνο ένας πίνακας μπορεί να είναι ίσος με τον άλλο ή όχι, αλλά και οι δύο δεν μπορούν να είναι ίσοι καθώς έχουν διαφορετικά μήκη. Για να συγκρίνουμε τους πίνακες με αυτόν τον τρόπο, μπορούμε να χρησιμοποιήσουμε ένθετο βρόχο για το οποίο θα μπορούσε να είναι κάπως έτσι:

for...

    for...

{

    {

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

    	{
   		 //do something

   		         }

    }

}

Πρέπει να χρησιμοποιήσουμε ένα if δήλωση μέσα στους ένθετους βρόχους καθώς έχουμε να κάνουμε με πίνακες διαφορετικών μεγεθών.

Οι πίνακες έχουν δείκτη κειμένου και είναι ίσοι σε μήκος

Οι πίνακες με ευρετήριο κειμένου δεν είναι καλή πρακτική. Περιπλέκει περαιτέρω το έργο της ακόμη και σύγκρισης πινάκων μήκους καθώς και άνισου μήκους. Αυτό καλύπτει επίσης το 'Οι πίνακες έχουν ευρετήριο κειμένου και όχι ίσο'.

Το ίδιο μήκος, κάθε τιμή είναι ίση

Μια προσέγγιση για τη σύγκριση των var1 και var2 είναι ο έλεγχος εάν κάθε τιμή του var1 είναι αυστηρά ίση με την αντίστοιχη τιμή του var2.

Αυτό λειτουργεί καλά εάν όλα τα στοιχεία των πινάκων είναι πρωτόγονα σε αντίθεση με αντικείμενα. Τέλος της λειτουργίας επιστρέφει μια δυαδική τιμή. Εδώ είναι ένα παράδειγμα:

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);

Η έξοδος πρέπει να μοιάζει με αυτό:
λάθος αλήθεια

Χρησιμοποιώντας τη μέθοδο JSON.stringify().

Η JavaScript παρέχει μια λειτουργία JSON .stringify() προκειμένου να μετατρέψετε ένα αντικείμενο ή πίνακα σε συμβολοσειρά JSON. Μετατρέποντας σε συμβολοσειρά JSON μπορούμε να ελέγξουμε απευθείας αν οι συμβολοσειρές είναι ίσες ή όχι.

Ωστόσο, το JSON .stringify() μέθοδος μετατρέπει έναν πίνακα σε συμβολοσειρά JSON. Ρίξτε μια ματιά στο παρακάτω πρόγραμμα για να κατανοήσετε καλά την έννοια.

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);

Το παραπάνω πρόγραμμα θα συγκρίνει τους δεδομένους πίνακες και θα παράγει μια έξοδο. Οι πίνακες έχουν τα ίδια στοιχεία β γιατί βάζουμε την ίδια τιμή και στους δύο πίνακες.

Σε αυτήν την ανάρτηση ιστολογίου, εμείς έχουν μάθει 'Πώς να συγκρίνετε πίνακες σε JavaScript' και εξέτασαν μερικές από τις διαθέσιμες μεθόδους για να το κάνουν, συμπεριλαμβανομένου του απλού παραδείγματος κώδικα.