如何在树节点中遍历对象数组

时间:2019-12-15 11:33:50

标签: jquery typescript

我想将我的数据转换为特定的树节点格式。

是否有一种方法(打字稿或Jquery)遍历每个对象,子对象和孙对象等等,并更改格式?

  

当前数据格式

{
  "content": [
    {
      "dimension": "2019-12-13"
      "subList": [
        {
          "dimension": "2019-12-13",
          "subList": [
            {
              "dimension": "2019-12-13",
              "subList": []
            }
          ]
        }
      ]
    },
    {
      "dimension": "2019-12-13"
      "subList": [
        {
          "dimension": "2019-12-13",
          "subList": [
            {
              "dimension": "2019-12-13",
              "subList": []
            }
          ]
        }
      ]
    }
  ]
}

所以结果应该是这样

{
  "content": [
    {
      "data": {
        "dimension": "2019-12-13"
      },
      "children": [
        {
          "data": {
            "dimension": "2019-12-13"
          },
          "children": [
            {
              "data": {
                "dimension": "2019-12-13"
              },
              "children": []
            }
          ]
        }
      ]
    }
   ]
}

1 个答案:

答案 0 :(得分:0)

鉴于您正在处理树状数据结构,您可能需要递归函数。

让我们形式化处理的类型:

type Node1 = { // current node structure
  dimension: string
  subList: Node1[]
}

type Node2 = { // desired node structure
  data: {
    dimension: string
  }
  children: Node2[]
}

您的递归函数将如下所示:

const mapNode = (n: Node1): Node2 => {
  return {
    data: {
      dimension: n.dimension
    },
    children: n.subList.map(mapNode)
  }
}