Check equality of two array in JavaScript

JavaScript provides several ways to check the equality of two arrays. However, depending on the type of elements in the arrays and the desired level of comparison, some methods may be more efficient and appropriate than others.

1. JSON.stringify()

One common method is to use the JSON.stringify() method to convert both arrays to strings and then compare them using the equality operator (==).

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];

if (JSON.stringify(array1) == JSON.stringify(array2)) {
    console.log("The arrays are equal.");
} else {
    console.log("The arrays are not equal.");
}

This method works well for small arrays with simple data types, such as numbers and strings. However, it can be inefficient for large arrays and doesn’t check for deep equality of array elements.

2 .toString()

Another way is to use .toString() method and comparing the strings

const array1 = [1, 2, 3];
const array2 = [1, 2, 3];

if (array1.toString() === array2.toString()) {
    console.log("The arrays are equal.");
} else {
    console.log("The arrays are not equal.");
}

If the order of elements in the arrays doesn’t matter and you want to compare them regardless of their order, you can use the sort() method to sort the elements of both arrays and then compare them using the JSON.stringify() method or the .toString() method.

const array1 = [1, 2, 3];
const array2 = [3, 2, 1];

const sortedArray1 = array1.sort();
const sortedArray2 = array2.sort();

if (JSON.stringify(sortedArray1) === JSON.stringify(sortedArray2)) {
    console.log("The arrays are equal.");
} else {
    console.log("The arrays are not equal.");
}

3. set and every

Another way is to convert the arrays to sets and then compare their sizes and values, since Sets only contain unique values

const array1 = ["apple", "banana", "orange"];
const array2 = ["orange", "banana", "apple"];

const set1 = new Set(array1);
const set2 = new Set(array2);

if (set1.size === set2.size && [...set1].every(val => set2.has(val))) {
    console.log("The arrays are equal.");
} else {
    console.log("The arrays are not equal.");
}

If you need to check the deep equality of arrays, it’s recommended to use a library like Lodash’s _.isEqual() or Ramda’s R.equals(). These libraries offer more robust comparison methods that can handle complex data types and nested arrays.

Leave a Reply