用数组动态填充多维数组

Dynamically fill multidimensional array with arrays

本文关键字:数组 动态 填充      更新时间:2023-09-26

我一直在做一些研究,但没有取得任何进展。在这种情况下,我需要一个数组来包含可能数量可变的数组。根据下面的例子,你有什么想法吗?

var masterArray = [];
function PrepData(inVal) {
  var amt = inVal.split("|");
  for (var i = 0; i < amt.length; i++) {
    // !!!Trouble area!!!
    masterArray[i].push = amt[i];
  };
}

我所做的是将12个月的数据输入到这个函数中,所以每次激活调用函数时PrepData都会运行12次。变量inVal可以包含类似"9|9|0"或"9|123|470|1500|13"的内容。我想做的是在管道上拆分传入值,并将结果存储在amt中。然后,我想将amt中的每个值馈送到masterArray中的各个数组中。好消息是,一旦第一个值为,inVal的长度是恒定的,所以如果12次迭代中的第一次分为3个部分,其他11次也会。为了说明这一点,以下是我期望在给定以下输入的情况下进行的典型运行:

Oct: "1|2|1300"
Nov: "1|3|1400"
Dec: "2|5|1450"
Jan: "3|6|1900"
Feb: "4|8|2015"
Mar: "4|8|2020"
Apr: "19|38|3200"
May: "30|42|3500"
Jun: "32|50|5000"
Jul: "48|72|6300"
Aug: "50|150|7500"
Sep: "80|173|9000"

一旦所有12个都运行完PrepData,我就应该有一个包含以下内容的数组:

masterArray[0] == {1, 1, 2, 3, 4, 4, 19, 30, 32, 48, 50, 80}   // All the numbers from the first section
masterArray[1] == {2, 3, 5, 6, 8, 8, 38, 42, 50, 72, 150, 173}   // All the numbers from the second section
masterArray[2] == {1300, 1400, 1450, 1900, 2015, 2020, 3200, 3500, 5000, 6300, 7500, 9000}   // All the numbers from the third section

如果每个月都包含一个包含5个部分的字符串,那么masterArray需要能够从[0]到[4],依此类推。上面的问题区域不起作用,所以我显然缺少了一些东西,但不知道可能是什么。

这是更新后的代码

var masterArray = [];
function PrepData(inVal){
  var amt = inVal.split("|");
  for (i in amt) {
    if(typeof masterArray[i] == 'undefined'){
        masterArray[i] = [];
    }
    masterArray[i].push(amt[i]);
  }
 }

需要首先检查masterArray中的每个索引中是否定义了数组。如果没有定义,则需要将其初始化为一个空白数组。然后你可以推送拆分后的值,得到相同的结果

masterArray[0] == {1, 1, 2, 3, 4, 4, 19, 30, 32, 48, 50, 80} 
masterArray[1] == {2, 3, 5, 6, 8, 8, 38, 42, 50, 72, 150, 173} 
masterArray[2] == {1300, 1400, 1450, 1900, 2015, 2020, 3200, 3500, 5000, 6300, 7500, 9000}

这是js fiddle 中的一个演示