JavaScript is a great language that has endured a long struggle over the years. Yet it continues to shine despite all the criticisms.
In this regard, I have decided to compare two arrays and see if they are equal. Equal in the sense of length and element within the array. In so doing I also take into consideration that the order of the elements doesn't matter.
Here is my code below:
const isArrayEquals = (arr1, arr2) => {
let count = 0;
for(let i = 0; i < arr1.length; i++) {
for(let j = 0; j < arr2.length; j++) {
if(arr1[i] == arr2[j]) {
count++
}
}
}
return arr1.length == arr2.length && count == arr1.length ? true : false;
}
console.log(isArrayEquals([1, 2, 3, 4, 5], [1, 2, 5, 3, 4])) // true
console.log(isArrayEquals(["me", "you", "us"], ["us", "me"])) // false
console.log(isArrayEquals([], [])) // true
Well this might not be the best way to implement this but I think it will help in the process.
I've also implemented this and some other helper methods into a npm package called rademe-js.
Hope it helps and someday we might have Array.equals implemented into ECMA TC39 specification.
Top comments (8)
This looks like a clean implementation for most use cases! One limitation is that I don't think it will handle equality comparisons where the array elements are themselves arrays or objects. For example:
Thanks @Harrison Reid, at first my thoughts weren't focus on this aspect and now I will have to look into it and see what needs to be done.
And if you have a solution to share I will be grateful.
I don't have any solution to share for the moment unfortunately, I don't think it's an easy problem to solve - particularly when considering deeply nested combinations of arrays and objects.
Yeah sure but I do believe it can be solve.
Anything is possible
Absolutely! Good luck with it 👍
Why would you consider two arrays with the same elements in different order equal?
could have been sorted, or just appended in a different order.
Yeah well, I think it doesn't matter which order it is in what should matters is if the elements in those arrays are the same.