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',''));
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.