網頁中產生了一個類似
商品名稱 |
|
數量 |
|
事件 |
|
商品名稱 |
|
數量 |
|
事件 |
|
商品名稱 |
|
數量 |
|
事件 |
|
...
情況:
1.商品名稱有很多種,其中會有一些是相同的
2.每個商品下都有一個事件,事件可能會不相同
需求:
我需要做一個統計表,相同的商品名的商品整合在一起,並且根據不的事件進行分類,再統計整合後的不同事件的商品數量。
例子:
飛機 |
|
1 |
|
損壞 |
|
坦克 |
|
2 |
|
維修 |
|
飛機 |
|
2 |
|
維修 |
|
飛機 |
|
3 |
|
損壞 |
|
樣本需求效果
飛機共6架,損壞4架,維修2架坦克共2架,維修2架
現有資料
$('#tbody tr').each(function(index) {});
回複內容:
網頁中產生了一個類似
商品名稱 |
|
數量 |
|
事件 |
|
商品名稱 |
|
數量 |
|
事件 |
|
商品名稱 |
|
數量 |
|
事件 |
|
...
情況:
1.商品名稱有很多種,其中會有一些是相同的
2.每個商品下都有一個事件,事件可能會不相同
需求:
我需要做一個統計表,相同的商品名的商品整合在一起,並且根據不的事件進行分類,再統計整合後的不同事件的商品數量。
例子:
飛機 |
|
1 |
|
損壞 |
|
坦克 |
|
2 |
|
維修 |
|
飛機 |
|
2 |
|
維修 |
|
飛機 |
|
3 |
|
損壞 |
|
樣本需求效果
飛機共6架,損壞4架,維修2架坦克共2架,維修2架
現有資料
$('#tbody tr').each(function(index) {});
//定義存放統計結果的對象//JS的對象你可將其理解成為一個Hash資料結構//最後的資料結構為//{// '產品key1':{// prod:'產品名1',// event:{// ‘事件類型Key1’:{type:'事件類型1',count:事件數目量},// ‘事件類型Key2’:{type:'事件類型2',count:事件數目量}// }// },// '產品key2':{// prod:'產品名2',// event:{// ‘事件類型Key3’:{type:'事件類型3',count:事件數目量},// ‘事件類型Key4’:{type:'事件類型4',count:事件數目量}// }// },// ... // }var result={};var fieldMapping=['prod','count','eventType'];$('tbody tr').each(function(index,item) { //定義存放一行資料的對象 var lineData={}; //尋找tr下的所有td元素,對其遍曆 $(item).find('td').each(function(index,item){ //讀取td元素下的常值內容 var value=$(item).text(); //fieldMapping[index] 按位置讀取定義的屬性名稱,並將讀取的內容賦給lineData //第1個td為產品名,第2個td為數量,第3個為事件類型 lineData[fieldMapping[index]]=value; }); //擷取整理行資料後,對其進行統計處理 processRow(lineData);});//處理擷取到的一行資料,按產品,及事件類型統計function processRow(lineData){ //判斷result對象中是否有 某個產品的屬性,如果不存在,那麼建立這個屬性 //並將一個統計對象賦值給這個屬性 if(!result[lineData.prod]){ result[lineData.prod]={ prod: lineData.prod, event:{} }; } //讀取event對象下的特定類型的屬性資料 var event=result[lineData.prod]['event'][lineData.eventType]; //如果這個事件類型不存在,那麼添加事件類型,並設定數量為0 if(!event){ event={ type: lineData.eventType, count:0 }; result[lineData.prod]['event'][lineData.eventType]=event; } //將當前行資料中的事件數目量資訊累加到事件數目量統計對象上 event.count=parseInt(lineData.count)+event.count;}console.log(result);
啟動並執行結果如所示: