json多级嵌套,js中如何根据多个层级的序列号找到替换对应的属性值

发布于 2022-09-12 02:07:34 字数 1589 浏览 14 评论 0

问题描述

image.png

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]、)
image.png

    /* 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴者 2022-09-19 02:07:34

你这功能类似于这个:https://www.lodashjs.com/docs...;

function getObject(params) {
    var extraParams = params.slice(2);
    var objectPath = '['+ params[0] +'].listRight['+ params[1] +']';
    extraParams.forEach(function (param) {
        objectPath += '.tasks['+ param +']';
    });
    return _.get(that.functionsList, objectPath);
}

最后,你这么用:

getObject([0,4]);// 返回的是listRight中的第四个对象。
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文