javascript - 用数组动态填充多维数组

标签 javascript arrays multidimensional-array

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

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 次迭代中的第一个迭代 split 成 3 部分,那么其他 11 次迭代也会 split 成 3 部分。简单来说,以下是我期望在给定此输入的情况下典型运行会产生的结果:

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"

一旦所有十二个都运行完 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 中的演示

关于javascript - 用数组动态填充多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25985827/

相关文章:

javascript - 在 AngularJS 指令中创建条件模板项时遇到问题

javascript - 如何知道 DOM 元素何时移动或调整大小

JavaScript : How to delete array if we have a collection of element's properties

JavaScript 不区分大小写的数组通用排序

c++ - 无法将形状添加到数组 C++

javascript - 将数组变成多维数组? JavaScript

javascript - 防止客户端控制数据到服务器

javascript - 如何获取Canvas图像数据?

c# - 将 C# 列表传递给 X++

c++ - 消除积木方案