怎么找到向上得到省市区Id?

发布于 2022-09-12 03:59:36 字数 267 浏览 13 评论 0

本地的所有省市区数据如图:
image.png
后台只返回一个区的areaId,怎么推算出市的、省的areaId,按顺序放到一个数组里,[省areaId,市areaId,区areaId]?

补充:(后台返回的areaId不一定是区这个级别的,有可能是上一级的市或省的,也可能是下级县、街道的,最终想要随便给我一个areaId,让我推出所有上级的areaId)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

难理解 2022-09-19 03:59:36
    let $data = 你截图的数据;
    let _id = 后端返给你的areaId;
    let res = [];
    $data.forEach(el => {
        el.children.forEach(ele => {
            ele.children.forEach(item =>{
                if(item.areaId === _id){
                    res = [el.areaId,ele.areaId,item.areaId]
                }
            })
        })
    })
    return res
    //不知道是不是你想要的
落在眉间の轻吻 2022-09-19 03:59:36

递归实现深度优先遍历:area 是你截图的数据结构,id 是你要查找的 id ,返回的 temp 数组是这个 id 的所有父节点

familyTree (area, id) { 
    var temp = [] 
    var forFn = function (arr, id) { 
        for (var i = 0; i < arr.length; i++) { 
            var item = arr[i] 
            if (item.id === id) { 
                temp.push(item) 
                forFn(area, item.parentId) 
                break 
            } else { 
                if (item.children) { 
                    forFn(item.children, id) 
                } 
            } 
        } 
    } 
    forFn(area, id) 
    return temp 
}
脸赞 2022-09-19 03:59:36

提供一种思路

可以先将树形数据递归处理为一维数组,这样查找会方便一些

// tree
[
    {
        id: '001',
        children: [
            {
                id: '001_01'
            },
            {
                id: '001_02'
            }
        ]
    }
]

转换为

[
    {
        id: '001',
        parentId: ''
    },
    {
        id: '001_01',
        parentId: '001',
    },
    {
        id: '001_02',
        parentId: '001'
    },
]

在这个基础上,还可以扩展.每个item加上path

[
    {
        id: '001',
        parentId: '',
        path: ['001']
    },
    {
        id: '001_01',
        parentId: '001',
        path: ['001', '001_01']
    },
    {
        id: '001_02',
        parentId: '001',
        path: ['001', '001_02']
    },
]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文