Comparar duas arrays em JavaScript

  1. Array.prototype.equals para comparar duas arrays em JavaScript
  2. JSON.stringify() para comparar arrays em JavaScript
  3. Comparar duas arrays em JavaScript utilizando loops

Este tutorial introduz três formas de comparar matrizes em JavaScript. Existem múltiplas formas de o fazer, mas o desempenho pode variar.

Array.prototype.equals para comparar duas arrays em JavaScript

O JavaScript fornece-nos a capacidade de adicionar novas propriedades e métodos às classes existentes. Podemos utilizar Array.prototype para adicionar o nosso método personalizado equal ao objecto Array.

No exemplo abaixo, vamos primeiro verificar o comprimento de ambos os arrays e depois comparar cada item. Estamos também a verificar se a1 e a2 são instâncias de Array porque se não são, não são idênticas. Finalmente, utilizamos o método para comparar a primeira array com a segunda por a1.equals(a2).

Exemplo:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3];
var a3 = [1, 2, 3, 4];

Array.prototype.equals = function (getArray) {
  if (this.length != getArray.length) return false;

  for (var i = 0; i < getArray.length; i++) {
    if (this[i] instanceof Array && getArray[i] instanceof Array) {
      if (!this[i].equals(getArray[i])) return false;
    } else if (this[i] != getArray[i]) {
      return false;
    }
  }
  return true;
};

console.log("Comparing a1 and a2", a1.equals(a2));
console.log("Comparing a1 and a3", a1.equals(a3));

Resultado:

Comparing a1 and a2 true
Comparing a1 and a3 false

JSON.stringify() para comparar arrays em JavaScript

Outra técnica para comparar duas matrizes é primeiro fundi-las com o tipo de cordel e depois compará-las. O JSON é utilizado para transferir dados de/para um servidor web, mas podemos utilizar o seu método aqui. Podemos fazer isto utilizando JSON.stringify() que converte um Array para um string. Como agora tanto o a1 como o a2 são strings, podemos utilizar === para ver se são iguais ou não.

Exemplo:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3];
var a3 = [1, 2, 3, 4];

console.log("Comparing a1 and a2", JSON.stringify(a1) === JSON.stringify(a2));
console.log("Comparing a1 and a3", JSON.stringify(a1) === JSON.stringify(a3));

Resultado:

Comparing a1 and a2 true
Comparing a1 and a3 false

Comparar duas arrays em JavaScript utilizando loops

O looping é a forma mais tradicional de comparar matrizes em JavaScript porque envolve looping através das matrizes e depois comparar cada elemento entre si para verificar se coincidem.

Para o tornar mais limpo, podemos utilizar funções e depois devolver booleano como resultado.

Exemplo:

var a1 = [1, 2, 3];
var a2 = [1, 2, 3]; 
var a3 = [1, 2, 3, 4];

const getResult = function (a1, a2) {
   var i = a1.length;
   if (i != a2.length) return false;

   while (i--) {
     if (a1[i] !== a2[i]) return false;
   }
   return true;
 };

console.log("Comparing a1 and a2", getResult(a1, a2));
console.log("Comparing a1 and a3", getResult(a1, a3));

Resultado:

Comparing a1 and a2 true
Comparing a1 and a3 false

Artigo relacionado - JavaScript Array

  • Armazenar Key-Value Array em JavaScript
  • Esvaziar um Array em JavaScript