json多级嵌套,js中如何根据多个层级的序列号找到替换对应的属性值
问题描述
if (value.length === 1) {
that.functionsList[index].listRight = _.cloneDeep(itemList);
}
if (value.length === 2) {
that.functionsList[index].listRight[value[0]].tasks = _.cloneDeep(itemList);
}
if (value.length === 3) {
that.functionsList[index].listRight[value[0]].tasks[value[1]].tasks = _.cloneDeep(itemList);
}
根据value能找到它是listRight ( that.functionsList[index].listRight)
中的哪一层的第几个。
value的层级数量不限。第0位代表第一层所在序列号,第1位代表在第二层的,其中第二层是嵌套在第一层中的tasks。([0]、[0,1]、[1,2,3]、)
/* value表示层级序列号,是个数组(比如说[0,4]),
我先在listRight中找到第一层序列0中的tasks值,在其tasks中找第二层序列4中*/
let cloneIndex = [...value];
that.functionsList.map((item,index) => {
if (item.name === name) {
let listRight = that.functionsList[index].listRight
let itemList = _.cloneDeep(listRight);
while(cloneIndex.length > 1) {
itemList = itemList[cloneIndex.shift()].tasks;
}
let last = value[value.length - 1];
/* 省略开始 */
// 删掉了itemList几项元素
/* 省略结束*/
/* 怎么得到正确的that.functionsList[index].listRight。目前我的代码只对第一层有用 */
that.functionsList[index].listRight = _.cloneDeep(itemList);
}
})
你期待的结果是什么?实际看到的错误信息又是什么?
目前我的代码只对第一层有用 ,即value。length = 1时。最后一句赋值那里卡住了。比如:
我期待的是替换,把that.functionsList[index].listRight中找到的那一项用itemList替换掉
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你这功能类似于这个:https://www.lodashjs.com/docs...;
最后,你这么用: