import {Table, Sum} from './table'; var table: Table; var rows: Array>; rows = [ ["a","1"], ["b","2"], ["a","3"], ["b","1"], ["a","2"], ["b","3"], ]; table = new Table("Root", rows, [1]); table.PivotTree([0, 1]); table.ItrLeaves( (inTable: Table) => { inTable.Columns.forEach( (inColumn: Sum, inIndex: number) => { inTable.Rows.forEach( (inRow: Array) => { inColumn.Original += parseFloat(inRow[inColumn.ColumnIndex]); }); inTable.ItrParents( (inParent: Table)=> { inParent.Columns[inIndex].Original += inColumn.Original; }); }); } ); table.ItrChildren( inTable => console.log(inTable) );