Comparar duas arrays em JavaScript

Rupam Yadav 12 outubro 2023
  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
Comparar duas arrays em JavaScript

Este tutorial introduz três formas de comparar arrays 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 arrays é 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 arrays em JavaScript porque envolve looping através das arrays 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
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - JavaScript Array