In JavaScript ist ein Array ein Objekt mit einem Index als Schlüssel und einem Array-Wert als Wert eines bestimmten Schlüssels des Array-Objekts. Manchmal müssen wir überprüfen, ob zwei Arrays gleich sind.
Die erste Lösung, die mir in den Sinn kommt, besteht darin, den Gleichheitsoperator zu verwenden und wie Array1 == Array2 zu vergleichen. Hoppla! Dies funktioniert nicht, da ein Array ein Objekt ist und wir in JavaScript zwei Objekte nicht direkt vergleichen können. Wir müssen also jedes Element des Arrays vergleichen.
In diesem Tutorial lernen wir verschiedene Methoden zum Vergleichen zweier JavaScript-Array-Objekte kennen.
sort() können wir Array-Werte in JavaScript sortieren. Danach können wir eine for-Schleife verwenden, um die Elemente an jedem Index im Array zu vergleichen. Wenn die Elemente an einem beliebigen Index nicht übereinstimmen, können wir sagen, dass die beiden Array-Objekte unterschiedlich sind.
Benutzer können die Methode sort() und die for-Schleife verwenden, um zwei Array-Objekte gemäß der folgenden Syntax zu vergleichen.
// sort arrays first arra1.sort(); array2.sort(); if (array1.length != array2.length) { // arrays are not the same } else { for () { // if elements at index i are not the same, return false } } } // both arrays are the same
Benutzer können nach dem folgenden Algorithmus arbeiten.
Schritt 1 - Verwenden Sie die Methode sort(), um beide Arrays zu sortieren.
Schritt 2 – Vergleichen Sie die Längen der beiden Arrays. Wenn die Längen nicht gleich sind, geben Sie „false“ zurück, was darauf hinweist, dass die beiden Arrays nicht gleich sind.
Schritt 3 − Wenn die Länge der beiden Arrays gleich ist, verwenden Sie eine for-Schleife, um die beiden Arrays zu durchlaufen.
Schritt 4 - Vergleichen Sie die Elemente beider Arrays an jedem Index. Wenn die Elemente am Index nicht übereinstimmen, geben Sie false zurück.
Schritt 5 – Zwei Arrays sind identisch, wenn alle Elemente in beiden Arrays übereinstimmen.
Im folgenden Beispiel haben wir zwei Arrays mit Zahlen erstellt und diese mit der Methode sort() sortiert. Anschließend verwenden wir eine for-Schleife, um jedes Element der beiden Arrays zu vergleichen.
In der Ausgabe können Benutzer sehen, dass beide Arrays gleich sind, da beide Arrays dieselben Werte enthalten.
<html> <body> <h3>Using the <i>array.sort()</i> method and <i>for</i> loop to check if two arrays are the same using JavaScript </h2> <button onclick = "checkArray()"> Compare arrays </button> <div id = "output"> </div> <script> let output = document.getElementById('output'); let array1 = [32, 32, 54, 1, 2, 3, 4]; let array2 = [1, 2, 3, 4, 32, 54, 32]; output.innerHTML += "The first array values are " + array1 + "<br>"; output.innerHTML += "The second array values are " + array2 + "<br>"; function checkArray() { array1.sort(); array2.sort(); if (array1.length != array2.length) { output.innerHTML += "Both arrays are not same!"; return false; } else { for (let i = 0; i < array1.length; i++) { if (array1[i] != array2[i]) { output.innerHTML += "Both arrays are not same!"; return false; } } } output.innerHTML += "Both arrays are the same!"; return true; } </script> </body> </html>
Wir können die forEach-Schleife verwenden, um jedes Array-Element zu durchlaufen. Die Methode indexOf() findet das erste Vorkommen des Elements im Array und gibt -1 zurück, wenn das Referenzarray das Element nicht enthält.
Benutzer können die forEach-Schleife und die indexOf()-Methode verwenden, um zwei Array-Objekte gemäß der folgenden Syntax zu vergleichen.
if (array2.length != array1.length) { // array are not the same return false; } else { array1.forEach((element) => { if (array2.indexOf(element) == -1) { return false; } }) }
In diesem Algorithmus müssen wir die Arrays nicht wie beim ersten Ansatz sortieren.
Schritt 1 – Überprüfen Sie, ob die Längen der beiden Arrays gleich sind. Wenn nicht, geben Sie „false“ zurück.
Schritt 2 − Wenn die Längen gleich sind, verwenden Sie die forEach()-Schleife, um jedes Element zu durchlaufen.
Schritt 3 − Verwenden Sie für jedes Element von Array 1 die Methode indexOf(), um zu prüfen, ob es in Array 2 vorhanden ist.
Schritt 4 – Wenn die Methode indexOf() für ein beliebiges Element -1 zurückgibt, bedeutet dies, dass die beiden Arrays nicht identisch sind.
Wenn der Benutzer im folgenden Beispiel auf die Schaltfläche klickt, wird eine Funktion „compareArray()“ aufgerufen. Die Funktion „compareArray()“ vergleicht die beiden Arrays von Zeichenfolgenelementen.
In der Ausgabe kann der Benutzer beobachten, dass die beiden Arrays nicht gleich sind, da die Werte der beiden Arrays unterschiedlich sind.
<html> <body> <h3>Using the <i>forEach() loop and indexOf() method</i> to check if two arrays are the same using JavaScript </h3> <button onclick = "compareArray()"> Compare arrays</button> <div id = "output"> </div> <script> let output = document.getElementById('output'); let array1 = ["Hello", "Hi", "How"]; let array2 = ["Are", "You", "!"]; output.innerHTML += "The first array values are " + array1 + " <br>"; output.innerHTML += "The second array values are " + array2 + " <br>"; function compareArray() { var isSame = true; if (array2.length != array1.length) { output.innerHTML += "Both arrays are not same!"; return false; } else { array2.forEach((element) => { if (array1.indexOf(element) == -1) { isSame = false; } }) } if (isSame) { output.innerHTML += "Both arrays are the same!"; } else { output.innerHTML += "Both arrays are not same!"; } return true; } </script> </body> </html>
Wir haben zwei verschiedene Möglichkeiten kennengelernt, zwei Arrays in JavaScript zu vergleichen. Benutzer können die erste Methode zum Vergleichen von Arrays mit doppelten Werten verwenden, während die zweite Methode nur zum Vergleichen von Arrays mit eindeutigen Werten geeignet ist.
Außerdem können Benutzer die Methode JSON.stringify() verwenden, um das Array von Objekten und sortierten Arrays zu vergleichen.
Das obige ist der detaillierte Inhalt vonWie vergleiche ich zwei JavaScript-Array-Objekte mit jQuery/JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!