(Javascript)减少和取消设置数组
使用嵌套的值数组:(Javascript)减少和取消设置数组,javascript,arrays,object,reduce,flatten,Javascript,Arrays,Object,Reduce,Flatten,使用嵌套的值数组: var stagedArray = [ ["Spring", "Volleyball", "V"], ["Spring", "Baseball", "V"], ["Fall", "Baseball", "JV"], ["Fall", "Baseball", "V"] ]; 假设每个嵌套数组的分层位置0是父级,位置1是其直接子级,位置2是位置1的子级,我可以使用什么方法来减少和取消设置此数组,以获得类似的结果: var finalList =
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" }
]
}
]
}]
理想情况下,我希望创建一个函数来定义与它们动态关联的位置和标签。
非常感谢 在一个良好的起点上与同事一起工作,接下来的步骤将是更新此函数以递归方式工作,使用不同的深度和动态标签
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"
}
}]
}]
*/
什么方法?迭代数组并在运行时生成结果。