UNPKG

oberknecht-utils

Version:
56 lines (52 loc) 1.35 kB
export function getByObjectFromTree( obj: object, key: string, searchmode: number, parentkeynames?: boolean ): Array<string | any[]> | undefined { if ( !obj || typeof obj !== "object" || !Object.keys(obj) || !(key ?? undefined) ) return undefined; searchmode = searchmode ?? 0; let matches: Array<string | string[]> = []; let _getobj = (obj2) => { Object.keys(obj2).forEach((o) => { function search(m) { switch (m) { case 0: return o === key; case 1: return o == key; case 2: return o.includes(key); case 3: return key.includes(o); case 10: return o.match(new RegExp(`${key}`)); case 11: return o.match(new RegExp(`${key}`, "i")); case 15: return key.match(new RegExp(`${o}`)); case 16: return key.match(new RegExp(`${o}`, "i")); } } if ( (obj2[o] ?? undefined) && typeof obj2[o] === "object" && Object.keys(obj2[o]) ) { if (search(searchmode) && parentkeynames) matches.push([obj2[o], obj2]); _getobj(obj2[o]); } else { if (search(searchmode)) matches.push([obj2[o], obj2]); } }); }; _getobj(obj); return matches; }