Skip to content

Instantly share code, notes, and snippets.

@orafaelfragoso
Last active October 15, 2015 22:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save orafaelfragoso/fa6c0818e5fa9e4ed9aa to your computer and use it in GitHub Desktop.
Save orafaelfragoso/fa6c0818e5fa9e4ed9aa to your computer and use it in GitHub Desktop.
A function to compare two Arrays
let compareArrays = (arr1, arr2) => {
if (!arr1 || !arr2)
return false;
if (arr1.length !== arr2.length)
return false;
for(let i=0; i<arr1.length; i++) {
if (arr1[i] instanceof Array && arr2[i] instanceof Array) {
if (compareArrays(arr1[i], arr2[i]))
return false;
} else if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
@raphamorim
Copy link

Pode fazer com JSON.stringfy também (números e texto):

var a1 = [1,2,3];
var a2 = [1,2,3];
console.log(a1==a2);    // false
console.log(JSON.stringify(a1)==JSON.stringify(a2));    // true

@raphamorim
Copy link

Mas essas são as formas rápidas de fazer o trabalho. Porém, uma não é para todos os casos e outra é bem custosa. Existe um right way para equal compare de Array, o seu ta bem parecido. Diferenças pequenas no algoritmo pois cada um faz de uma forma diferente (penso eu). No meu caso por já estar usando ES6 e esse código vai ser transpilado anyway (e provávelmente deve estar sendo minificado) usaria o Map ou forEach por estética mesmo.

Sugestão: http://stackoverflow.com/questions/7837456/how-to-compare-arrays-in-javascript?answertab=votes#tab-top (sem fazer prototype do Array pelo amor de Deus hehe)

@orafaelfragoso
Copy link
Author

@raphamorim Obrigado pelo insight! Realmente, usar JSON.stringify é uma gambiarra sagaz mas eu meio que copiei o código do cara lá e adaptei pra minha necessidade, SEM usar prototype!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment