UNPKG

@featurevisor/core

Version:

Core package of Featurevisor for Node.js usage

77 lines (64 loc) 1.65 kB
export function checkIfObjectsAreEqual(obj1: any, obj2: any): boolean { if (obj1 === obj2) { return true; } if (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) { return false; } const keys1 = Object.keys(obj1); const keys2 = Object.keys(obj2); if (keys1.length !== keys2.length) { return false; } for (const key of keys1) { if (!keys2.includes(key)) { return false; } const val1 = obj1[key]; const val2 = obj2[key]; if (Array.isArray(val1) && Array.isArray(val2)) { if (!checkIfArraysAreEqual(val1, val2)) { return false; } } else if (typeof val1 === "object" && typeof val2 === "object") { if (!checkIfObjectsAreEqual(val1, val2)) { return false; } } else if (val1 !== val2) { return false; } } return true; } export function checkIfArraysAreEqual(arr1: any[], arr2: any[]): boolean { if (arr1 === arr2) { return true; } if (!Array.isArray(arr1) || !Array.isArray(arr2)) { return false; } if (arr1.length !== arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { const val1 = arr1[i]; const val2 = arr2[i]; if (Array.isArray(val1) && Array.isArray(val2)) { if (!checkIfArraysAreEqual(val1, val2)) { return false; } } else if ( typeof val1 === "object" && typeof val2 === "object" && val1 !== null && val2 !== null ) { if (!checkIfObjectsAreEqual(val1, val2)) { return false; } } else if (val1 !== val2) { return false; } } return true; }