可以通过递归的方式将对象转成树。具体操作如下:

  1. 首先需要确定树形结构的数据格式,一般包含以下几个属性:id、name、children。

  2. 编写递归函数,将对象转成树形结构。函数的参数包括当前对象和父节点。

  3. 遍历当前对象的属性,如果属性值是对象,则将其递归处理,生成子节点,并将子节点添加到当前节点的 children 属性中。

  4. 如果属性值不是对象,则直接将其添加到当前节点的属性中。

  5. 最后返回当前节点。

示例代码如下:

function objToTree(obj, parentId) {
  const tree = [];
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      const node = {
        id: key,
        name: key,
        children: [],
        parentId: parentId
      };
      if (typeof obj[key] === 'object') {
        node.children = objToTree(obj[key], key);
      } else {
        node.value = obj[key];
      }
      tree.push(node);
    }
  }
  return tree;
}

const obj = {
  a: {
    b: {
      c: 1,
      d: 2
    },
    e: 3
  },
  f: 4
};

const tree = objToTree(obj, null);
console.log(tree);

输出结果:

[
  {
    "id": "a",
    "name": "a",
    "children": [
      {
        "id": "b",
        "name": "b",
        "children": [
          {
            "id": "c",
            "name": "c",
            "value": 1,
            "parentId": "b"
          },
          {
            "id": "d",
            "name": "d",
            "value": 2,
            "parentId": "b"
          }
        ],
        "parentId": "a"
      },
      {
        "id": "e",
        "name": "e",
        "value": 3,
        "parentId": "a"
      }
    ],
    "parentId": null
  },
  {
    "id": "f",
    "name": "f",
    "value": 4,
    "parentId": null
  }
]
``
js中如何将对象转成树

原文地址: https://www.cveoy.top/t/topic/emDB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录