2015-10-20 47 views
0

随着值的嵌套数组:(JavaScript)的减少和Unflatten阵列

var stagedArray = [ 
    ["Spring", "Volleyball", "V"], 
    ["Spring", "Baseball", "V"], 
    ["Fall", "Baseball", "JV"], 
    ["Fall", "Baseball", "V"] 
]; 

假设分层定位每个嵌套数组的零是父,位置之一是其直接子和两个位置是位置的子一个,我可以用什么方法来减少和unflatten这个数组来得到类似这样的结果:

var finalList = [ 
    { 
     season: "Spring", 
     items: [ 
       { 
        sport: "Basketball", 
        items: [ 
          { division: "V" }, 
         ] 
       } 
       { 
        sport: "Volleyball", 
        items: [ 
          { division: "V" }, 
         ] 
       } 
     ] 
    }, 
     { 
     season: "Fall", 
     items: [ 
       { 
        sport: "Baseball", 
        items: [ 
          { division: "V" }, 
          { division: "JV" } 
         ] 
       } 
     ] 
    }] 

理想的路线,我想创建一个函数来定义什么位置和标签关联到他们动态。 非常感谢!

+2

什么方法?循环访问数组并根据需要构建结果。 – Jon

回答

0

在一个良好的起点上与一位同事一起工作,接下来的步骤是更新这个函数递归地工作,具有不同的深度和动态标签。

function getTranformedData(data) { 
    var transformedData = {}; 

    for (var i = 0, n = stagedArray.length; i < n; i++) { 
    var sportData = stagedArray[i]; 

    var season = sportData[0]; 
    var typeOfSport = sportData[1]; 
    var teamDivision = sportData[2]; 

    if (!transformedData.hasOwnProperty(season)) { 
     // Create new season object 
     transformedData[season] = { 
     'season': season, 
     'items': [] 
     }; 
    } 

    var transformedSportData = { 
     'sport': typeOfSport, 
     'items': { 
     'division': teamDivision 
     } 
    }; 

    transformedData[season]['items'].push(transformedSportData); 
    } 
    return transformedData; 
} 

function convertObjectToArrayOfOjects(dataObject) { 
    var data = [] 
    for (var key in dataObject) { 
    data.push(dataObject[key]); 
    } 

    return data; 
} 

var stagedArray = [ 
    ["Spring", "Volleyball", "V"], 
    ["Spring", "Baseball", "V"], 
    ["Fall", "Baseball", "JV"], 
    ["Fall", "Baseball", "V"] 
]; 

var data = getTranformedData(stagedArray); 
data = convertObjectToArrayOfOjects(data); 


console.log(data); 


/* RESULTING DAT STRUCTURE */ 

/* 

[{ 
    "season": "Spring", 
    "items": [{ 
    "sport": "Volleyball", 
    "items": { 
     "division": "V" 
    } 
    }, { 
    "sport": "Baseball", 
    "items": { 
     "division": "V" 
    } 
    }] 
}, { 
    "season": "Fall", 
    "items": [{ 
    "sport": "Baseball", 
    "items": { 
     "division": "JV" 
    } 
    }, { 
    "sport": "Baseball", 
    "items": { 
     "division": "V" 
    } 
    }] 
}] 


*/