
David V. answered 05/01/22
Software Engineering (HTML, CSS, React, Ruby on Rails) Tutor
// first helper function:
function areArraysEqual(val1, val2) {
return val1.every(function (value, index) { return value === val2[index] });
}
// second helper function:
function areNonArrayObjectsEqual(val1, val2) {
let isEqual = true;
for (key in val1) {
val1[key] === val2[key] ? null : isEqual = false;
}
for (key in val2) {
val2[key] === val1[key] ? null : isEqual = false;
}
return isEqual;
};
function DeepEqual(val1, val2) {
// typeof null is 'object' in JS
if (typeof val1 === "object" && typeof val2 === "object" && val1 && val2) {
if (val1.length !== val2.length) {
return false;
}
if (Array.isArray(val1) && Array.isArray(val2)) {
return areArraysEqual(val1, val2);
}
else {
return areNonArrayObjectsEqual(val1, val2);
}
}
else {
return val1 === val2;
}
}