博客地址:http://www.globm.top/blog/1/detail/19
在工作的时候需要将带有pid的数据转换成list级联结构,,一直都没有找到太好的工具函数。偶然间看到了这个函数,研究了下,感觉这个函数很强大,所以记录下来,作为备用,同时也贴出来,供大家使用;

transData (a, idStr, pidStr, childStr) {
      const r = []
      const hash = {}
      const id = idStr
      const pid = pidStr
      const children = childStr
      let i = 0
      let j = 0
      const len = a.length
      for (; i < len; i++) {
        hash[a[i][id]] = a[i]
      }
      for (; j < len; j++) {
        const aVal = a[j]
        const hashVP = hash[aVal[pid]]
        if (hashVP) {
          !hashVP[children] && (hashVP[children] = [])
          hashVP[children].push(aVal)
        } else {
          r.push(aVal)
        }
      }
      return r
    }

/** 
 * json格式转树状结构 
 * @param   {json}      json数据 
 * @param   {String}    id的字符串 
 * @param   {String}    父id的字符串 
 * @param   {String}    children的字符串 
 * @return  {Array}     数组 
 */ 
const arr1 = this.transData(arr, 'id', 'pid', 'children')
console.log(arr1)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐