UNPKG

@allenfuture/lotide

Version:
73 lines (63 loc) 1.88 kB
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