aboutsummaryrefslogtreecommitdiff
path: root/src/utils.js
blob: b9dd9ce394c7d9707d79d98354de1598d35c56ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export const is_nullundef = x => x === null || x === undefined;
export const is_obj = x => x !== null && typeof x === "object";
export const is_arr = x => Array.isArray(x);

export const clean_dict = x =>
  [x]
    .map(x => Object.entries(x))
    .map(x =>
      x.map(([k, v]) =>
        is_arr(v)
          ? [k, v.map(vv => (is_obj(vv) ? clean_dict(vv) : vv))]
          : is_obj(v)
          ? [k, clean_dict(v)]
          : [k, v]
      )
    )
    .map(x => x.filter(([k, v]) => v !== null))
    .map(x => Object.fromEntries(x))
    .pop();