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

已知一个对象,还有一个数据路径的字符串,如何根据数据路径找到值

已知一个对象,还有一个数据路径的字符串,如何根据数据路径找到值

侃侃尔雅 2019-05-21 17:35:43
有一个对象varobj={a:{b:{c:3}}};vartext='a.b.c'如何根据text路径修改c的值为4,让结果为{a:{b:{c:4}}}小程序的setData方法就支持数据路径输入,我就是想知道如何实现这个功能,已知思路是递归lettext='a.b.c';this.setData({[text]:4})谢谢各位大佬帮忙
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

varobj={
a:{
b:{
c:3
}
}
}
vartext='a.b.c'
functionsetData(obj,config){
letkeys=Object.keys(config)
keys.forEach(key=>{
cur=obj
letnames=key.split('.')
letlast=names.length-1
names.forEach((name,index)=>{
if(!cur[name])cur[name]={}
if(last===index){
cur[name]=config[key]
}else{
cur=cur[name]
}
})
})
}
setData(obj,{[text]:4,'e.f':6})//obj:{a:{b:{c:4}},e:{f:6}}}
                            
查看完整回答
反对 回复 2019-05-21
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

functionsetObjfromText(obj,text,value){
lettemp=obj
lettextgroup=text.split('.')
letl=textgroup.length
for(leti=0;itemp[textgroup[i]]=typeof(temp[textgroup[i]])=='object'?temp[textgroup[i]]:{}
temp=temp[textgroup[i]]
}
temp[textgroup[l-1]]=temp[textgroup[l-1]]|value
returnobj
}
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 535 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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