JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

JavaScript

const directories = {
  a: {
    b: {
      c: null,
      d: null
    },
    e: null,
    f: null,
    g: {
      h: {
        i: {
          j: null,
          k: null
        }
      }
    }
  }
}


function findNumSubdirectoriesWithoutChildren(dirs) {

  let result = 0;

  function findSubdir(subdir) {
    console.log('findSubdir', subdir);
    
    Object.keys(subdir).forEach((dir) => {
      if (subdir[dir] === null) {
        result++;
      } else {
        findSubdir(subdir[dir]);
      }
    })
  }

  if (Object.keys(dirs).length === 0) return result;

  findSubdir(dirs);
  /*   Object.keys(dirs).forEach((dir) => {
      if (dirs[dir] === null) {
        result++;
      } else {
        Object.keys(dirs[dir]).forEach((sub) => {
          if (dirs[dir][sub] === null) {
            result++;
          } else {
            Object.keys(dirs[dir][sub]).forEach((subsub) => {
              if (dirs[dir][sub][subsub] === null) {
                result++;
              } else {
                console.log('use recursion!');
              }
            });
          }
        });
      }
    }); */


  return result;
}




console.log(findNumSubdirectoriesWithoutChildren(directories));