2014-09-23 46 views
0

我一直在做一些研究,並沒有得到任何地方。我有一種情況,我需要一個數組來包含可能數量可變的數組。基於下面的例子,你有什麼想法嗎?動態填充多維數組與陣列

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" 

一旦所有十二個運行通過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],等等。上面的麻煩區域不起作用,所以我明顯錯過了一些東西,但不知道可能是什麼。

回答

1

這裏是更新的代碼

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每個索引定義。如果沒有定義,那麼你需要將它初始化爲一個空白數組。然後你就可以推splited值,你會得到相同的結果

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

+0

輝煌,謝謝!我會盡快測試它,但很高興知道我大部分時間都處於正確的軌道上。 – AurumPotabile 2014-09-23 03:15:50