2013-02-04 53 views
0

我正在開發一個在線工具以在有組織的儀表板界面中顯示信息。 我正在從CSV電子表格中提取數據,並根據整個CSV數據陣列中的一個字段將它們分離到另一個多維數組中。根據值循環並將CSV數據分離到輔助數組中

這是我曾嘗試:

 // arr is the array that holds the entire CSV data 
     // inds is where I need the entries separated by industry (arr[i][0]) 
     var indx = 0; // using to add new array to inds array 
     for(var i = 1; i < arr.length-1; i++){ 
      if(arr[i][0] === arr[i-1][0]) { 
       if(! inds[indx]) { 
        inds[indx] = [] 
       } else { 
        inds[indx].push(arr[i]); 
       } 
      } else { 
       indx++; 
      } 
     } 

基本上就是這樣做:
如果行業領域是一樣的條目之前,扔到ARR數組索引indx,否則,爲下一個行業增加一個indx

這個解決方案的問題:
它跳過了行業的第一個條目,因爲該行之前是一個不同的行業,所以arr[i-1][0]被檢查上次行業將跳過下一業的第一行。

我怎樣才能重新格式化該腳本:
我想也許嵌套的/時間,但不能肯定。我想到的邏輯是:
對於csv的每一行,雖然行業欄是相同的,折騰到各自inds[index]。或者,從arr中提取相同的值爲arr[i][0]的行。

我相信有一個更簡單的解決方案,這就是爲什麼我在這裏,所以我希望我清楚地瞭解我的想法,我很欣賞任何和所有的反饋。

如果您需要更多解釋,請在評論中告訴我。

+0

在這些語言中沒有「multiD數組」你只能嵌套數組(嚴格地說,數組的元素可以是對另一個數組實例的引用),這是不同的事情。從你的描述中我不清楚代碼是打算做什麼*。請提供預期輸入和輸出數據的示例,以便可以建議解決問題而不是修復代碼。 – PointedEars

回答

3

以下邏輯是否有效?

var indx = -1; 
// using to add new array to inds array 
     for(var i = 1; i < arr.length-1; i++){ 
      if(arr[i][0] !== arr[i-1][0]) { 
       indx++; 
       inds[indx] = [] 
      } 
      inds[indx].push(arr[i]); 
     } 

已更新。

+0

(並以indx = -1開始,而不是0;) – asifrc

+0

確實有效。但它仍然在跳過該領域的第一個實例'arr [i] [0]' – kingkode

+0

更新了代碼,請告訴我:) – asifrc