JSFiddle - React, Tailwind, and code Playground

by brigand

JavaScript

const isObject = (value) => value != null && typeof value === 'object';

const traverse = (rootObject) => {
  const result = [];

  const inner = (object, path) => {
    const keys = isObject(object) ? Object.keys(object) : [];
    if (keys.length === 0) {
      result.push(path);
    } else {
      for (const key of keys) {
        inner(object[key], path.concat([key]));
      }
    }
  };

  inner(rootObject, []);

  return result;
};

console.log(
  traverse({
    shark: {
      TEST: {
        test: {
          meta: {
            status: 'regular',
          },
          'multiple-run': {
            meta: {
              creator_user: 'gold',
            },
          },
        },
      },
    },
    octopus: {
      J212: {
        'F291-21': {
          meta: {
            status: 'regular',
          },
          'multiple-run': {
            meta: {
              creator_user: 'gold',
            },
          },
        },
      },
    },
  }),
);