树结构和数组之间的转化

1、树结构转为数组

  treeToArray(treeData, returnValue = []) {

    let newValue = [...returnValue]

    treeData.map(item => {

      if (item.children) {

        const { children, ...treeObj } = { ...item }

        newValue.push(treeObj)

        newValue = this.treeToArray(children, newValue)

      } else {

        newValue.push(item)

      }

    })

    return newValue

  },

2、数组转化为树结构

 arrayToTree(arr, pid = 0) {
    // 判断是否是数组, 不是数组就返回 []
    if (!Array.isArray(arr) || !arr.length) return [];
    let newArr = []
    arr.forEach(item => {
        // 判断 当前item.pid 和 传入的pid 是否相等,相等就push 进去
        if (item.pid == pid) {
            newArr.push({
                ...item, children: ArrayToTree(arr, item.id)
            })
        }
    })
    return newArr
}

你可能感兴趣的:(javascript,开发语言,ecmascript)