element 级联选择器数据源过滤?

element 级联选择器,选项是全国行政区划。此时后端返回的是一个二维数组,比如[['浙江省','杭州市','余杭区'],['江苏省','南京市]], 修改级联选择器选项的树型结构的值为

[
  {
    "code": "32",
    "name": "江苏省",
    "children": [
      {
        "code": "3201",
        "name": "南京市",
        "children": [
          {
            "code": "320102",
            "name": "玄武区"
          },
          {
            "code": "320104",
            "name": "秦淮区"
          },
          {
            "code": "320105",
            "name": "建邺区"
          },
          {
            "code": "320106",
            "name": "鼓楼区"
          },
          {
            "code": "320111",
            "name": "浦口区"
          },
          {
            "code": "320113",
            "name": "栖霞区"
          },
          {
            "code": "320114",
            "name": "雨花台区"
          },
          {
            "code": "320115",
            "name": "江宁区"
          },
          {
            "code": "320116",
            "name": "六合区"
          },
          {
            "code": "320117",
            "name": "溧水区"
          },
          {
            "code": "320118",
            "name": "高淳区"
          }
        ]
      }
    ]
  },
  {
    "code": "33",
    "name": "浙江省",
    "children": [
      {
        "code": "3301",
        "name": "杭州市",
        "children": [
          {
            "code": "330110",
            "name": "余杭区"
          }
        ]
      }
    ]
  }
]

请问这个算法该如何编写?

阅读 448
1 个回答

通过该方法可以实现树结构。

function convertToTree(data) {
  const tree = [];

  data.forEach(items => {
    let currentNode = tree;

    items.forEach((item, index) => {
      const existingNode = currentNode.find(node => node.name === item);

      if (existingNode) {
        currentNode = existingNode.children;
      } else {
        const newNode = {
          code: '',
          name: item,
          children: []
        };

        currentNode.push(newNode);
        currentNode = newNode.children;
      }

      if (index === items.length - 1) {
        currentNode.code = items[0];
      }
    });
  });

  return tree;
}
const originalData = [['浙江省','杭州市','余杭区'],['江苏省','南京市']];

console.log(convertToTree(originalData));

但是实现了也没有办法获取code码啊。。。应该让后端修改返回的数据格式。或者前端自己使用静态文件来使用数据,。

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