首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(Javascript)减少和取消展平数组

(Javascript)减少和取消展平数组
EN

Stack Overflow用户
提问于 2015-10-21 00:11:38
回答 1查看 600关注 0票数 0

使用嵌套的值数组:

代码语言:javascript
复制
var stagedArray = [
    ["Spring", "Volleyball", "V"],
    ["Spring", "Baseball", "V"],
    ["Fall", "Baseball", "JV"],
    ["Fall", "Baseball", "V"]
];

假设每个嵌套数组的位置0按层次结构是父数组,位置1是其直接子数组,位置2是位置1的子数组,我可以使用什么方法来减少和取消展平该数组,以获得类似以下的结果:

代码语言:javascript
复制
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" }
                        ]
                }
        ]
    }]

理想情况下,我想创建一个函数来定义什么位置和哪个标签动态地与它们关联。非常感谢!

EN

Stack Overflow用户

发布于 2015-10-21 00:56:50

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

代码语言:javascript
复制
 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"
    }
  }]
}]


*/
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33241602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档