JSFiddle - React, Tailwind, and code Playground
HTML
<div id="test"></div>
JavaScript
// attach the .compare method to Array's prototype to call it on any array
Array.prototype.compareIdentical = function (array) {
// if the other array is a falsy value, return
if (!array)
return false;
// compare lengths - can save a lot of time
if (this.length != array.length)
return false;
for (var i = 0; i < this.length; i++) {
// Check if we have nested arrays
if (this[i] instanceof Array && array[i] instanceof Array) {
// recurse into the nested arrays
if (!this[i].compare(array[i]))
return false;
}
else if (this[i] != array[i]) {
// Warning - two different object instances will never be equal: {x:20} != {x:20}
return false;
}
}
return true;
}
// attach the .compare method to Array's prototype to call it on any array
Array.prototype.compare = function (array) {
// if the other array is a falsy value, return
if (!array)
return false;
// compare lengths - can save a lot of time
if (this.length != array.length)
return false;
this.sort();
array.sort();
for (var i = 0; i < this.length; i++) {
// Check if we have nested arrays
if (this[i] instanceof Array && array[i] instanceof Array) {
// recurse into the nested arrays
if (!this[i].compare(array[i]))
return false;
}
else if (this[i] != array[i]) {
// Warning - two different object instances will never be equal: {x:20} != {x:20}
return false;
}
}
return true;
}
$('#test').append("[1, 2, [3, 4]].compareIdentical ([1, 2, [3, 4]]) === false ||| ");
$('#test').append([1, 2, [3, 4]].compareIdentical ([1, 2, [3, 2]]) === false);
$('#test').append("<br /><br />");
$('#test').append('[1, "2,3"].compareIdentical ([1, 2, 3]) === false; ||| ');
$('#test').append([1, '2,3'].compareIdentical ([1, 2, 3]) ===...