@allenfuture/lotide
Version:
Support [flatten] test
73 lines (63 loc) • 1.88 kB
JavaScript
const assertEqual = function(actual, expected) {
if (actual === expected) {
console.log(`✅✅✅Assertion Passed: ${actual} === ${expected}`);
} else {
console.log(`❌❌❌Assertion Failed: ${actual} !== ${expected}`);
}
};
const eqArrays = function(arr1, arr2) {
if (arr1.length === arr2.length) {
for (let i = 0; i < arr1.length; i++) {
if (arr1[i] !== arr2[i]) {
return false;
}
}
return true;
} else {
return false;
}
};
//new code
const eqObjects = function(object1, object2) {
let keysObj1 = Object.keys(object1);
let keysObj2 = Object.keys(object2);
if (keysObj1.length !== keysObj2.length) {
return false;
} else {
for (let key of keysObj1) {
let value1 = object1[key];
let value2 = object2[key];
if (value2 === undefined) {
return false;
}
if(value1 instanceof Array) {
if (!eqArrays(value1, value2)) {
return false;
}
} else if (value1 instanceof Object) {
if (!eqObjects(value1, value2)) {
return false;
}
} else {
if (value1 !== value2) {
return false;
}
}
}
return true;
}
};
//test cases
// const ab = { a: "1", b: "2" };
// const ba = { b: "2", a: "1" };
// assertEqual(eqObjects(ab, ba), true);
// const abc = { a: "1", b: "2", c: "3" };
// assertEqual(eqObjects(ab, abc), false);
// const cd = { c: "1", d: ["2", 3] };
// const dc = { d: ["2", 3], c: "1" };
// assertEqual(eqObjects(cd, dc), true);
// const cd2 = { c: "1", d: ["2", 3, 4] };
// assertEqual(eqObjects(cd, cd2), false);
console.log(eqObjects({ a: { z: 1 }, b: 2 }, { a: { z: 1 }, b: 2 })); // => true
console.log(eqObjects({ a: { y: 0, z: 1 }, b: 2 }, { a: { z: 1 }, b: 2 })); // => false
console.log(eqObjects({ a: { y: 0, z: 1 }, b: 2 }, { a: 1, b: 2 })); // => false