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

javascript 一个复杂的对象,怎么通过value获取到key

javascript 一个复杂的对象,怎么通过value获取到key

人到中年有点甜 2019-09-26 11:01:48
有这样一个对象,想通过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 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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

TA贡献1802条经验 获得超5个赞

想想好像除了递归,就只剩看场景取巧了。
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-09-26
  • 2 回答
  • 0 关注
  • 601 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号