为了账号安全,请及时绑定邮箱和手机立即绑定

跪求!javascript 一个复杂的对象,怎么通过value获取到key各位有什么建议?

跪求!javascript 一个复杂的对象,怎么通过value获取到key各位有什么建议?

慕姐8265434 2019-06-20 10:56:33
有这样一个对象,想通过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操作。
                            
查看完整回答
反对 回复 2019-06-20
?
阿波罗的战车

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
                            
查看完整回答
反对 回复 2019-06-20
  • 2 回答
  • 0 关注
  • 395 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信