js中,实现一堆的一维数组转成多维数组,如地区

9 篇文章 0 订阅

很多时候,跟后端接口开发对接时,因为需求的关系,需要前端地区数据跟后端的数据要一一对应,所以一般来说前端应该是直接拿后端的地区数据,然后再来操作一下地区数据变成我们自己可以用的,有种情况,后台给到我们的是一堆一维数组,而我们需要的是多维数据,这时候就要操作数据了

直接上代码(使用的是vue):

下面的代码改成自己的就可以了,一般修改location_id, pid, childs, location_id为父级ID,pid为子级ID,当pid==location_id时,pid所在的数组就会放在父级下变成子数组

const city = require('./dlc_location.json');
created() {
  var json = city.RECORDS;
  //for (var i = 0; i < json.length; i++) {
  //  json[i].code = json[i].location_id;
  //}
  var CHINA_REGIONS = this.buildTree(json);
  console.log(CHINA_REGIONS);
}
methods: {
    buildTree(arr) {
      let temp = {};
      let tree = {};
      arr.forEach(item => {
        temp[item.location_id] = item;
      });

      let tempKeys = Object.keys(temp);
      tempKeys.forEach(key => {
        let item = temp[key];
        let _itemPId = item.pid;
        let parentItemByPid = temp[_itemPId];
        if (parentItemByPid) {
          if (!parentItemByPid.childs) {
            parentItemByPid.childs = [];
          }
          parentItemByPid.childs.push(item);
        } else {
          tree[item.location_id] = item;
        }
      });
      return Object.keys(tree).map(key => tree[key]);
    }
  },
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值