有这样一个对象,想通过nodeId获取key{childNode:{nodeId:'sid-start',childNode:{nodeId:'aaaa',conditionNodes:[{nodeId:'bbbb',childNode:{nodeId:'cccc'}},{nodeId:'dddd',}],childNode:{nodeId:'eeee',}}}}比如知道nodeId为cccc,得到childNode>childNode>conditionNodes[0]>childNode。卡了一下午了,跪求大牛们帮忙看看
2 回答
慕的地10843
TA贡献1785条经验 获得超8个赞
树的遍历是编程的基本功,野路子自学出身的我只能写个蹩脚的递归给你自个琢磨改进了:constdepth=(obj,value,path)=>{for(letkeyinobj){if(obj.hasOwnProperty(key)){constcurrent=obj[key];constsubPath=[key].concat(path);if(currentinstanceofObject){constsubResult=depth(current,value,subPath);if(!!subResult.length){returnsubResult;}}elseif(current===value){returnsubPath}else{}}}return[]};出来的结果将会是反的,需要进行一次.reverse操作。
阿波罗的战车
TA贡献1862条经验 获得超6个赞
想想好像除了递归,就只剩看场景取巧了。varvalue=4;varobj={a:1,b:[2,3],c:{d:4,e:5}};varreg=newRegExp(`[,|{]"([^"]+?)":${value}[,|}]`);varres=JSON.stringify(obj).match(reg);console.log(res&&res[1]);//d
添加回答
举报
0/150
提交
取消