使用嵌套的值数组:
var stagedArray = [
["Spring", "Volleyball", "V"],
["Spring", "Baseball", "V"],
["Fall", "Baseball", "JV"],
["Fall", "Baseball", "V"]
];假设每个嵌套数组的位置0按层次结构是父数组,位置1是其直接子数组,位置2是位置1的子数组,我可以使用什么方法来减少和取消展平该数组,以获得类似以下的结果:
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" }
]
}
]
}]理想情况下,我想创建一个函数来定义什么位置和哪个标签动态地与它们关联。非常感谢!
发布于 2015-10-21 00:56:50
在一个良好的起点上与一位同事合作,下一步将是更新此函数以递归工作,具有不同的深度和动态标签。
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"
}
}]
}]
*/https://stackoverflow.com/questions/33241602
复制相似问题