js求一个获取地区的方法

var loca = {
  data : [
    {
      name : "广东",
      id : 10000,
      data : [
        {
          name : "广州",
          id : 10001,
          data : [
            {
              name : "天河区",
              id : 10003,
              data : []
            },{
              name : "越秀区",
              id : 10004,
              data : []
            }
          ]
        },{
          name : "深圳",
          id : 10002,
          data : [
            {
              name : "罗湖区",
              id : 10005,
              data : []
            },{
              name : "南山区",
              id : 10006,
              data : []
            }
          ]
        }
      ]
    }
  ]
}

求一个方法,假如:
传入 [{name : "广东",id : 10000},{name : "广州",id : 10001},{name : "越秀区",id : 10004}],就获取到越秀区的data

[{name : "广东",id : 10000},{name : "广州",id : 10001}],就获取到广州的data

[{name : "广东",id : 10000}],就获取到广东的data

阅读 3k
5 个回答
新手上路,请多包涵

初来乍到,请多多关照,谢谢!

新手上路,请多包涵

你这相当于获取数组的最后一个对象吧

如果传入的是广东 深圳 越秀,返回什么

说实话伸手问题我挺不想答的,正常来说就会给你一个思路,不过正巧我现在烦得很,想换换脑子,就给你写一个。

反正就是递归的思路。

// 测试数据
const test = [{ name: "广东", id: 10000 }, { name: "广州", id: 10001 }, { name: "越秀区", id: 10004 }]
function TE (req, data = local.data) {
  const cur = req.splice(0, 1)[0]
  const child = data.find(item => item.id === cur.id).data
  if (res.length) {
    return TE(req, child)
  } else {
    return child
  }
}
console.log(TE(test))

// 地区数据
var local = {
  data: [
    {
      name: "广东",
      id: 10000,
      data: [
        {
          name: "广州",
          id: 10001,
          data: [
            {
              name: "天河区",
              id: 10003,
              data: [1, 2]
            },
            {
              name: "越秀区",
              id: 10004,
              data: [2, 3]
            }
          ]
        },
        {
          name: "深圳",
          id: 10002,
          data: [
            {
              name: "罗湖区",
              id: 10005,
              data: [3, 4]
            },
            {
              name: "南山区",
              id: 10006,
              data: [4, 5]
            }
          ]
        }
      ]
    }
  ]
}
{
    name : "广东",
    id : 10000,
    data : [
        {
            name : "广州",
            id : 10001,
            data : [
                {
                    name : "天河区",
                    id : 10003,
                    data : []
                },
                {
                    name : "越秀区",
                    id : 10004,
                    data : []
                }
            ]
        }
    ]
}
 

换一种思路 把结构换成kv的形式

{
    10000: {
        name : "广东",
        id : 10000,
        data: [10001]
    },
    10001: {
        name : "广州",
        id : 10001,
        data: [10003, 10004]
    },
    10003: {
        name : "天河区",
        id : 10003,
        data : []
    },
    10004: {
        name : "越秀区",
        id : 10004,
        data : []
    }
}

id是唯一的 每次想查那个内容直接使用id去取就可以了, data也只记录子集的id

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