Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Javascript)减少和取消设置数组_Javascript_Arrays_Object_Reduce_Flatten - Fatal编程技术网

(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"
    }
  }]
}]


*/

什么方法?迭代数组并在运行时生成结果。