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 | 7ges. | 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.