怎么使用js把三列有父子关系的数据转化为树形结构的数组结构啊?


就是确定第1列就是根节点,第2列就是第2层节点,第3列就是第3层节点的树形结构

阅读 1.2k
1 个回答

既然是层级关系,就需要逐层进行遍历分类,首先,要将数据抽象为你实际需要的数据结构,比如像下面的数据结构:

        let students = [
            {
                name: 'a',
                school: 's1',
                class: 'c1',
            },
            {
                name: 'b',
                school: 's1',
                class: 'c2',
            },
            {
                name: 'c',
                school: 's2',
                class: 'c1',
            },
            {
                name: 'd',
                school: 's1',
                class: 'c1',
            },
            {
                name: 'd',
                school: 's3',
                class: 'c1',
            },
        ]

然后,进行遍历:

        // 1
        let result = []
        let schools = []

        students.forEach((item) => {
            if (!schools.includes(item.school)) {
                schools.push(item.school)
            }
        })

        // 2
        schools.forEach((item) => {
            result.push({
                key: item,
                value: [],
            })
        })

        // 3
        students.forEach((item) => {
            result.forEach((item2) => {
                if (item.school === item2.key) {
                    item2.value.push(item)
                }
            })
        })

上面的代码,是对学生按照学校进行分类,这是第一层分类,接下来,还需要按照年级和班级进行分类,也就是说,需要再进行这样的操作两次,才能达到最终的目标。我这里仅提供一个解决方案,也许还有其他的方案,供你参考。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏