UNPKG

apphouse

Version:

Component library for React that uses observable state management and theme-able components.

39 lines (35 loc) 1.24 kB
/** * Compares keys between two objects and returns an array of missing keys in the second object. * Nested objects are also checked. * * @template T * @param {T} obj1 - The first object to compare keys. * @param {T} obj2 - The second object to compare keys against. * @return {string[]} - An array of missing keys in `obj2` compared to `obj1`. */ export function compareKeys<T extends { [key: string]: any }>( obj1: T, obj2: T, prefix = '' ): string[] { const missingKeys: string[] = []; for (const key in obj1) { if (!(key in obj2) || typeof obj1[key] !== typeof obj2[key]) { // const mappedChildrenKeys = getMappedKeys(obj1[key]); // let childrenKeys = ''; // if (mappedChildrenKeys.length > 0) { // childrenKeys = `.${getMappedKeys(obj1[key])}`; // } missingKeys.push(prefix + key); } else if (typeof obj1[key] === 'object') { const nestedKeys = compareKeys(obj1[key], obj2[key], prefix + key + '.'); missingKeys.push(...nestedKeys.map((nestedKey) => prefix + nestedKey)); } } for (const key in obj2) { if (!(key in obj1) || typeof obj1[key] !== typeof obj2[key]) { missingKeys.push(prefix + key); } } return missingKeys; }