-
-
Save orafaelfragoso/fa6c0818e5fa9e4ed9aa to your computer and use it in GitHub Desktop.
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; | |
} |
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)
@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!
Pode fazer com JSON.stringfy também (números e texto):