2016-10-11 58 views
-1

我有這樣的數據:基於其他多個值數組添加值,然後重新集結

var data = [ 
    [1, "San Miguel National Central High School", "School", 1], 
    [1, "San Miguel Central Elementary School", "School", 2], 
    [2, "Medrano's Rice Mill and Warehouse", "Warehouse", 3], 
    [1, "Unknown", "Residential", 341], 
    [2, "Unknown", "Residential", 532], 
    [3, "Unknown", "Residential", 257], 
    [2, "Unknown", "Gas Station", 1] 
]; 

和預期輸出中應該是這樣的:

var data = [ 
    ["School", 3,0,0], 
    ["Warehouse", 0,3,0], 
    ["Residential", 341, 532, 257], 
    ["Gas Station", 0,1,0] 
]; 

對於其代表性,

  • data [i] [0] - >等級
  • 資料[i] [1] - >大廈名稱
  • 數據[I] [2] - >建築類型
  • 數據[I] [3] - >計數

結果應該有這樣的序列:

建築類型,1級計數,2級計數,3級計數

如果數組具有相同的級別和相同的建築物類型,則應添加計數值。

如何使用JavaScript或JQuery實現此目的?

+3

第一步是寫一些代碼 – Tibrogargan

回答

0

var input = [ 
 
    [1, "San Miguel National Central High School", "School", 1], 
 
    [1, "San Miguel Central Elementary School", "School", 2], 
 
    [2, "Medrano's Rice Mill and Warehouse", "Warehouse", 3], 
 
    [1, "Unknown", "Residential", 341], 
 
    [2, "Unknown", "Residential", 532], 
 
    [3, "Unknown", "Residential", 257], 
 
    [2, "Unknown", "Gas Station", 1] 
 
]; 
 
    
 
var output = []; 
 
    
 
function init() { 
 
    var index = {}; 
 
    for (let building of input) { 
 
     if (!index.hasOwnProperty(building[2])) { 
 
      index[building[2]] = output.length; 
 
      output.push([ building[2], 0, 0, 0 ]); 
 
     } 
 
     output[index[building[2]]][building[0]] += building[3]; 
 
    } 
 
    console.log(output); 
 
} 
 
document.addEventListener("DOMContentLoaded", init, false);

相關問題