nodeDict={
  // z:["a"],
  a:["b","c"],
  b:["e","f"],
  c:[],
  e:[],
  f:[]
  // c:["f",'a']
}
// a.nextArr = [b,c]
// b.nextArr = [a,b,e,f];
// c.nextArr = [f]
function getPreNode(node){
  let preArr = [] ;
  
  Object.keys(nodeDict).forEach(item=>{
    if(nodeDict[item].includes(node)){
      preArr.push(item)
    }
  })
  return preArr;
}
function getNodeMap (node,pre){

   const afterArr = nodeDict[node]||[];
  const beforeArr = getPreNode(node);
  let nextArr = [];
  let preArr = [];
  let hasCurrent = false;
  if(afterArr && afterArr.length){
    for(let i =0,len =afterArr.length;i<len;i++ ){
      if(afterArr[i]&& afterArr[i]!==pre){
  console.log('input node ',afterArr[i]);
          afterArr[i] = getNodeMap(afterArr[i],pre);
        
        
      }else{
        hasCurrent = true 
      }
  }}else{
    nextArr = []
  }
  nextArr = afterArr||[];
   if(beforeArr.length){
    for(let i =0,len =beforeArr.length;i<len;i++ ){
        beforeArr[i] = getNodeMap(beforeArr[i],pre);
      
  }  
  }
  preArr = beforeArr;
  
  return {current:node,nextArr,preArr,hasCurrent}
}




console.log(getNodeMap('a',''));

// console.log(getNodeMap('e',''));

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.