Это функция, которую я нашел для создания плоских клавиш, например
const keys = flattenKeys({a: { b: 1, c: 1}});
Возвращает
{ 'a.b': 1, 'a.c': 1 }
Но для этого ввода
const keys = flattenKeys({a: { b: 1, c: () => {}}});
Это дает мне
{ 'a.b': 1 }
Как мы видим, a.c
отсутствует
export const flattenKeys = (obj: Record<string, any> | any[], path: string[] = []) =>
!isObject(obj) ? { [path.join('.')]: obj } : reduce(obj, (cum, next, key) => merge(cum, flattenKeys(next, [...path, key])), {});
Я пытался добавить !isObject(obj) && isFunction(obj) ...
, но, похоже, не работает
Ожидаемый результат:
{
'a.b': 1,
'a.c': () => {}
}
@ Редактировать: isObject, уменьшить, объединение происходит из lodash
пакет