Struppi: mit zwei arrays folgende Tab aufbauen?

Beitrag lesen

array1 (Prod1, 2, Prod1, 3, Prod2, 4, Prod2, 5) //Daten von diesem Jahr
array2 (Prod1, 3, Prod1, 1, Prod2, 3, Prod2, 4) //Daten vom letzten Jahr

Ich würd die Daten anders aufbauen.

nun will ich aus diesen beiden arrays folgende tabelle erstellen.

Produkt | 2008 | 2007

Prod1   |  5   |  4
Prod2   |  9   |  7

ges.    |  14  |  11

So in etwa:

  
// Hilfsfunktion, für die Ausgabe  
String.prototype.fix = function(width, c , align)  
{  
   if(!width) return null;  
   if(!c) c = " ";  
   if(!align) align = LEFT;  
  
   var tmp = "";  
   var j = 0;  
  
   var start = 0;  
   if (align == RIGHT) start = width - this.length;  
   else if(align == CENTER) start = width/2 - (this.length/2);  
  
   if (start < 0 ) start = 0;  
   start = parseInt(start);  
   for(var i = 0; i < width;i++)  
   {  
       if(i == start)  
       {  
           if(j < this.length)  
           {  
             tmp += this.charAt(j++);  
             start++;  
             continue;  
           }  
       }  
       tmp += c;  
   }  
   return tmp;  
}  
window.CENTER = 1;  
window.LEFT = 2;  
window.RIGHT = 3;  
  
var werte = {  
2007: [  
{ Prod1: 3},  
{ Prod1: 1},  
{ Prod2: 3},  
{ Prod2: 4}  
], // Array 2007  
2008: [  
{ Prod1: 2},  
{ Prod1: 3},  
{ Prod2: 4},  
{ Prod2: 5}  
]  
};  
document.write('<pre>' +formatWerte(werte) + '</pre>');  
  
function formatWerte(wert) {  
 var text = 'Übersicht'.fix(10, ' ', CENTER);  
 var produkte = {};  
 var summe = {};  
  
 // Titelzeile:  
 for(var jahr in wert) {  
  text += '|' + jahr.fix(6, ' ', CENTER);  
  var array = wert[jahr];  
  //produkte[jahr] = {};  
  for(var i = 0; i < array.length; i++) {  
   for(p in array[i]) {  
    if(!produkte[p]) produkte[p] = {};  
    if(!produkte[p][jahr]) produkte[p][jahr] =0;  
    if(!summe[jahr]) summe[jahr] = 0;  
  
    produkte[p][jahr] += array[i][p];  
    summe[jahr] += array[i][p];  
   }  
  }  
 }  
 text += '\n';  
  
 // inhalt  
 for(var p in produkte) {  
  text += p.fix(10, ' ', CENTER);  
  
  for(jahr in produkte[p]) {  
   text += '|' + (''+ produkte[p][jahr]).fix(6, ' ', CENTER);  
  }  
  text += '\n';  
 }  
  
 // Summe  
 text += ''.fix(40, '-') + '\n'  
 + ''.fix(10, ' ');  
  
 for(jahr in produkte[p]) {  
   text += '|' + (''+ summe[jahr]).fix(6, ' ', CENTER);  
  }  
 return text;  
}  

Struppi.