Comparer les valeurs d'un tableau en JavaScript

Je voudrais comparer deux tableaux… idéalement, de manière efficace. Rien de compliqué, juste true s’ils sont identiques, sinon false. Sans surprise, l’opérateur de comparaison ne semble pas fonctionner.

var arr1 = [1,2,3];
var arr2 = [1,2,3];
console.log(arr1 == arr2);    // Renvoie false
console.log(JSON.stringify(arr1) == JSON.stringify(arr2));    // Renvoie true

Le codage JSON de chaque tableau fonctionne, mais existe-t-il un moyen plus rapide?

Trier le tableau et le comparer peut donner un résultat précis :

const sortedArr = arr2.slice().sort();

arr1.length === arr2.length && arr1.slice().sort().every(function(value, index) {
    return value === sortedArr[index];
});

Exemple:

arr1 = [3,2,1,4];
arr2 = [1,4,3,2];

Alors le code ci-dessus devrait donner true.

Je préfère utiliser la bibliothèque Underscore, que vous compariez des tableaux ou des objets, cela ressemble simplement à ceci :

_.isEqual(arr1, arr2)   // renvoie un booléen
_.isEqual(obj1, obj2) // renvoie un booléen

Je pense que c’est la façon la plus simple de comparer les valeurs d’un tableau en JavaScript en utilisant JSON stringify, et c’est peut-être la meilleure solution :

JSON.stringify(arr1) === JSON.stringify(arr2);

Cela convertit les objets arr1 et arr2 en chaînes de caractères afin qu’ils puissent être comparés. L’ordre est important dans la plupart des cas, car on peut trier l’objet en utilisant un algorithme de tri présenté dans l’une des réponses ci-dessus.

Je vous recommande de lire: