JSFiddle - React, Tailwind, and code Playground

by brigand

JavaScript

const traverse = (rootObject) => {
  const result = [];
  const path = [];
  
  const inner = (object) => {
    const keys = Object.keys(object);
    if (keys.length === 0) {
      result.push(path.slice());
    } else {
      for (const key of keys) {
        path.push(key);
        inner(object[key]);
        path.pop();
      }
    }
  };

  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"
          }
        }
      }
    }
  }
}),
);