跪求!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。卡了一下午了,跪求大牛们帮忙看看
慕姐8265434
浏览 396回答 2
2回答

慕的地10843

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

阿波罗的战车

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

相关分类

JavaScript