【问题标题】:Create A loop to loop through each year and load an array for that year创建一个循环遍历每年并加载该年的数组
【发布时间】:2021-09-16 13:06:31
【问题描述】:

所以下面我手动排序并加载了我的 water_supply1 数组,其中包含每年的数据,范围从 2015 年到 2018 年 AS COMMENTED ,我这样做的方式是'我更友善地重复我自己,所以我需要一个解决方案,以类似 for 循环的方式加载每年的这些数据。

let water_supply1 = []
let sortedData = ["BUF", "CCT", "EKH", "ETK","JHB", "MAN", "NMB", "TSH"]

            //data for year : 2015
            water_supply1[0] = res.data.table[1].slice(2,3)[0]
            water_supply1[1] = res.data.table[5].slice(2,3)[0]
            water_supply1[2] = res.data.table[9].slice(2,3)[0]
            water_supply1[3] = res.data.table[13].slice(2,3)[0]
            water_supply1[4] = res.data.table[17].slice(2,3)[0]
            water_supply1[5] = res.data.table[21].slice(2,3)[0]
            water_supply1[6] = res.data.table[25].slice(2,3)[0]
            water_supply1[7] = res.data.table[29].slice(2,3)[0]
            //data for year : 2016
            water_supply2[0] = res.data.table[2].slice(2,3)[0]
            water_supply2[1] = res.data.table[6].slice(2,3)[0]
            water_supply2[2] = res.data.table[10].slice(2,3)[0]
            water_supply2[3] = res.data.table[14].slice(2,3)[0]
            water_supply2[4] = res.data.table[18].slice(2,3)[0]
            water_supply2[5] = res.data.table[22].slice(2,3)[0]
            water_supply2[6] = res.data.table[26].slice(2,3)[0]
            water_supply2[7] = res.data.table[30].slice(2,3)[0]
            //data for year : 2017
            water_supply3[0] = res.data.table[3].slice(2,3)[0]
            water_supply3[1] = res.data.table[7].slice(2,3)[0]
            water_supply3[2] = res.data.table[11].slice(2,3)[0]
            water_supply3[3] = res.data.table[15].slice(2,3)[0]
            water_supply3[4] = res.data.table[19].slice(2,3)[0]
            water_supply3[5] = res.data.table[23].slice(2,3)[0]
            water_supply3[6] = res.data.table[27].slice(2,3)[0]
            water_supply3[7] = res.data.table[31].slice(2,3)[0]
            //data for year : 2018
            water_supply4[0] = res.data.table[4].slice(2,3)[0]
            water_supply4[1] = res.data.table[8].slice(2,3)[0]
            water_supply4[2] = res.data.table[12].slice(2,3)[0]
            water_supply4[3] = res.data.table[16].slice(2,3)[0]
            water_supply4[4] = res.data.table[20].slice(2,3)[0]
            water_supply4[5] = res.data.table[24].slice(2,3)[0]
            water_supply4[6] = res.data.table[28].slice(2,3)[0]
            water_supply4[7] = res.data.table[32].slice(2,3)[0]

所以这就是我尝试这样做的方式,但这个解决方案的问题只需要第一年,即 2015 年,我想循环并加载所有年份的数据。


            let num = 0
            let no = 1

            for (let i = 0; i < sortedData.length; i++) {
              no = no + num
              array[i] = res.data.table[no].slice(2, 3)[0]
              num = 4
  
            }
            console.log('check for loop',array)

结果:[87.79321381271719199906] 7]

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

    为什么不使用二维数组,第一个维度是年份,第二个维度是数据?例如:

    yearMapper = {
       2015: 1,
       2016: 2,
       2017: 3,
       2018: 4
    }
    
    let waterSupplyCollection = [];
    
    for (let year = 2015; year < 2020; year++){
        let waterSupply = [];
        for (let i = 0; i<8; i++){
            let index = i*4+yearMapper[year];
            waterSupply.push(res.data.table[index].slice(2,3)[0]);
        }
        waterSupplyCollection.push(waterSupply);
    }
    

    在这种情况下,有一个非常简单的模式可以根据不同的年份计算索引,这样您就不需要手动分配所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多