Skip to content

Instantly share code, notes, and snippets.

@maxtortime
Last active December 7, 2017 04:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maxtortime/dea7558069b2c6c93f5df691f0ce810c to your computer and use it in GitHub Desktop.
Save maxtortime/dea7558069b2c6c93f5df691f0ce810c to your computer and use it in GitHub Desktop.
Simple DFS (if it is plain js object)
const root = {};
const visit = [];
let vn = 0;
function dfs(v) {
Object.keys(v).forEach(function (k) {
if (!visit[vn++]) {
if (typeof(v[k]) === 'object') {
console.log(k, typeof(k));
dfs(v[k]);
}
else
console.log(k, v[k]);
}
else visit.splice(vn, 0, true);
});
}
dfs(root);
@qkraudghgh
Copy link

qkraudghgh commented Dec 7, 2017

ES6 version

const visit = {};
let i = 0;

function dfs(v) {
  Object.keys(v).forEach((k) => {
    i++;
    const key = `k${i}`;

    if (!visit[key]) {
      if (typeof(v[k]) === 'object') {
        console.log(k);
        dfs(v[k]);
      } else {
        console.log(k, v[k]);
      }
    } else { 
      visit[key] = true;
    }
  });
}

dfs(root);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment