猿问

萌新求教!javascript 怎么样才能通过value获取到key?求指导!

有这样一个对象,想通过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。卡了一下午了,跪求大牛们帮忙看看
拉丁的传说
浏览 599回答 2
2回答

胡子哥哥

树的遍历是编程的基本功,野路子自学出身的我只能写个蹩脚的递归给你自个琢磨改进了: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操作。

慕码人8056858

想想好像除了递归,就只剩看场景取巧了。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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答