數據結構處理(一)------ 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_))

這樣,就得到了我們想要的結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM