Jak porovnat dvě pole v JavaScriptu

Ve vanilkovém JavaScriptu bohužel není k dispozici žádná přímá metoda, jak porovnat dvě pole a zkontrolovat, zda jsou stejná. Pokud toto zadáte do Googlu, najdete na StackOverflow a dalších komunitách vývojářů spoustu různých odpovědí.

Při porovnávání dvou polí se musíte ujistit, že jejich délka je stejná, hodnoty shodné a objekty v nich přítomné jsou stejného typu.

JSON.stringify() Metoda

Nejjednodušší a nejrychlejší způsob, jak porovnat dvě pole, je převést je na řetězce pomocí metody JSON.stringify() a poté pomocí operátoru porovnání zkontrolovat, zda jsou oba řetězce stejné:

const arr1 = ['🍕', '🍔', '🍵', '🎂', '🍦'];
const arr2 = ['🍕', '🍔', '🍵', '🎂', '🍦'];

// compare arrays
if (JSON.stringify(arr1) === JSON.stringify(arr2)) {
    console.log('Both arrays are equal!');
} else {
    console.log('Arrays are not equal.');
}

Tento přístup je dobrý pouze pro základní srovnání, když prvky v obou polích mají přesně stejné pořadí. Pokud se pořadí prvků v obou polích liší, nebude to fungovat.

Například následující dvě pole by nebyla být rovna pomocí JSON.stringify() metoda:

const arr1 = ['a', 'b', 'c', 'd'];
const arr2 = ['a', 'c', 'b', 'd'];

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

Výše uvedená dvě pole obsahují stejný počet prvků a přesně stejné hodnoty, ale v jiném pořadí. Nejsou si tedy rovny při porovnání pomocí JSON.stringify() .

Lodash

Pro složitá pole, která obsahují prvky v jiném pořadí, stejně jako jiná pole a objekty, potřebujeme robustnější řešení, jako je Lodashův _.isEqual() metoda.

_.isEqual() metoda provádí hluboké srovnání mezi dvěma poli, aby zjistila, zda jsou ekvivalentní. Můžete jej dokonce použít k porovnání objektů, dat, řetězců, vyrovnávacích pamětí pole a dalších.

Zde je příklad:

const arr1 = ['John Doe', {age: 24, nationality: 'DE'}];
const arr2 = ['John Doe', {nationality: 'DE', age: 24}];

// compare arrays
if (_.isEqual(arr1, arr2)) {
    console.log('Arrays are equal!');
}

Podívejte se na tuto příručku, kde se dozvíte více o polích JavaScript a o tom, jak je používat k ukládání více hodnot do jedné proměnné.