假设我们现在有如下的json数据:

数据结构处理(一)------  json数据转树形结构

但我们想得到如下的树形结构:

数据结构处理(一)------  json数据转树形结构

 

我们可以这样来操作:

function trans_tree(jsonData){
    //temp为临时对象,将json数据按照id值排序.
    var result = [], temp = {}, len = jsonData.length

    for(var i = 0; i < len; i++){
        // 以id作为索引存储元素,可以无需遍历直接快速定位元素
        temp[jsonData[i]['id']] = jsonData[i] 
    }
    for(var j = 0; j < len; j++){
        var list = jsonData[j]
        // 临时变量里面的当前元素的父元素,即pid的值,与找对应id值
        var sonlist = temp[list['pid']] 
        // 如果存在父元素,即如果有pid属性
        if (sonlist) { 
            // 如果父元素没有children键
            if (!sonlist['children']) { 
            // 设上父元素的children键
            sonlist['children'] = [] 
            }
            // 给父元素加上当前元素作为子元素
            sonlist['children'].push(list) 
        } 
        // 不存在父元素,意味着当前元素是一级元素
        else { 
            result.push(list);
        }
    }
    return result;
}

console.log(trans_tree(_JSON_))

这样,就得到了我们想要的结果:

数据结构处理(一)------  json数据转树形结构

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-03-28
  • 2022-12-23
  • 2021-05-28
  • 2022-01-14
  • 2022-12-23
  • 2021-10-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-04-16
  • 2021-11-04
  • 2021-09-30
  • 2021-11-06
  • 2022-01-07
相关资源
相似解决方案