根据给定的字符串,修改一个多层嵌套对象对应的属性值
题目描述
我在localStorage里面储存用户信息userInfo,要封装一个修改userInfo的方法
相关代码
// userInfof里面有很多信息
var userInfo= {
id:'123',
name:'Jim',
info:{
address:{
home:'地王大厦',
work:{
workDays:'腾讯大厦',
weekend:'阿里巴巴大厦',
festival:'百度大厦',
},
},
money:{
balance:0,// 余额
redPacket:0,// 红包
integral:0,// 积分
}
}
}
// 比如修改localStorage.userInfo.info.address.work.workDays为京东大厦,则
editFn('userInfo.info.address.work.workDays','京东大厦');
// 比如修改localStorage.userInfo.info.money.balance为888,则
editFn('userInfo.info.money.balance','888');
你期待的结果是什么?
这个editFn方法改怎么写?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这里要求
userInfo
已经是解析后的一个object
,因此path
部分不能再以userInfo
开头。再一次这个没有处理数组的情形,需要留意。
如果你非要用这种方法来修改的话……,首先要明确一个,就是
LocalStorage
存储的是字符串所以我假设你的
LocalStorage
里面存的对象是JSON.stringify()
转出的json
我直接使用了eval来处理赋值,如果你想的话,循环或者递归来resolve路径也是可以的。
但是你所说的传递一个字符串路径的方式我十分不推荐。
你可以看到我单独封装了一个
RewriteLS
函数,使用该函数来处理的话会更加灵活,也更安全。
这里不太合理.如果给一个全新对象赋值嵌套属性的话,直接崩溃.
改造一下: