import { isObject } from "lodash"; export default function filterNestedObject(object, keyToFind, valToFind) { if (!isObject(object)) { return []; } const keys = Object.keys(object); return keys .map(key => { if (key === keyToFind && object[key] === valToFind) { return object; } if (Array.isArray(object[key])) { return object[key] .map(obj => filterNestedObject(obj, keyToFind, valToFind)) .flat() .filter(obj => !!obj); } if (isObject(object[key])) { return filterNestedObject(object[key], keyToFind, valToFind); } return false; }) .flat() .filter(obj => !!obj); }