js递归时,怎么样计算每一层的层级标签?

问题描述

后端提供的数据,没有包含label中的内容,但是在前端展示中,希望展示label,如图中label所示,但是目前只有层级level,不知道如何去计算出label;

相关代码

    {
    "datas": [{
        "A这个是一级": {
            "raw": "这个是内容",
            "level": "1",
            "label": "1",
            "这个是二级": {
                "raw": "这个是内容",
                "level": "2",
                "label": "1-1",
                "这个是三级": {
                    "raw": "这个是内容",
                    "level": "3",
                    "label": "1-1-1",
                    "这个是四级": {
                        "raw": "这个是四级的引用",
                        "level": "4",
                        "label": "1-1-1-1",
                        "这个是五级": {
                            "raw": "> 这个是五级",
                            "level": "5",
                            "label": "1-1-1-1-1",
                            "这个是六级a": {
                                "raw": "> 这个是六级的引用",
                                "level": "6",
                                "label": "1-1-1-1-1-1"
                            },
                            "这个是六级b": {
                                "raw": "> 这个是六级的引用",
                                "level": "6",
                                "label": "1-1-1-1-1-2"
                            }
                        }
                    }
                }
            }
        }
    }]
}

你期待的结果是什么?实际看到的错误信息又是什么?

求助大神,帮忙看看,怎么样能计算出label标签

阅读 2.1k
2 个回答

这个不是由你传入的么,每次判断是否有 child 的时候怕拼接一下就好了。
比如说:

function test(list, label = "1") {
  console.log("-----", label);
  if (list && list.length) {
    return list.map((item, index) => {
      return {
        ...item,
        label: label + "-" + (index + 1),
        child: test(item.child, label + "-" + (index + 1)),
      };
    });
  } else {
    return [];
  }
}
const data = [
  {
    raw: "这里是1级",
    level: "1",
    child: [
      {
        raw: "这里是2级",
        level: "2",
        child: [
          {
            raw: "这里是3级",
            level: "3",
            child: [
              {
                raw: "这里是4级-1",
                level: "4",
                child: [
                  {
                    raw: "> 这个是五级",
                    level: "5",
                    child: [],
                  },
                ],
              },
              {
                raw: "这里是4级-2",
                level: "4",
                child: [],
              },
            ],
          },
        ],
      },
    ],
  },
];
console.log(test(data))
childJin(data) {
    const a = data.children.length
    for (let i = 0; i < a; i++) {
        this.checkedDepartment.push({
            name: data.children[i].name,
            id: data.children[i].id
        })
        this.childJin(data.children[i])
    }
},
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题