import { isArray, isUndefined } from 'lodash';
export function findNested<T>(arr: T[], fn: (item: T) => boolean, nested = (item: T) => item['children']): T | undefined {
let res: T | undefined;
const reduceArr = (arr: T[]) => {
for (const item of arr) {
if (!isUndefined(res)) {
break;
}
if (fn(item)) {
res = item;
} else {
const children = nested(item);
if (isArray(children)) {
reduceArr(children);
}
}
}
};
reduceArr(arr);
return res;
}