1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
var compact2DMatrix = function(){
//private globals
//return if a line is empty
var isEmptyLine = function(line){
if(!(line instanceof Array))
return true;
for(var j = 0, lj = line.length, cell; j < lj; j++){
cell = line[j];
if(cell =! undefined && cell != null && cell != '')
return false;
}
return true
},
//return if a colonne is empty
isEmptyCol = function(array, indexCols){
for(var i = 0, l = array.length, cell; i < l; i++){
cell = array[i][indexCols];
if(cell =! undefined && cell != null && cell != '')
return false;
}
return true;
};
//public
return function(array){
//clear empty lines
var colsLength = 0;
for(var indexLine = 0, lineLength = array.length, line; indexLine < lineLength; indexLine++){
line = array[indexLine];
if(isEmptyLine(line)){
array.splice(indexLine, 1);
indexLine--;
lineLength--;
}
else colsLength = line.length > colsLength ? line.length : colsLength;
}
//clear empty colonnes
var indexCols = 0;
for(; indexCols < colsLength; indexCols++){
if(isEmptyCol(array, indexCols)){
for(var i = 0, l = array.length; i < l; i++)
array[i].splice(indexCols, 1);
colsLength--;
indexCols--;
}
}
return array;
}
}();
var le_tableau=new Array();
le_tableau[0]=new Array('cell 1 1', '', 'cell 1 2','cell 1 3', '', '', 'cell 1 5', '');
le_tableau[1]=new Array('cell 2 1', '', 'cell 2 2','cell 2 3', '', '', 'cell 2 5', '');
le_tableau[2]=new Array('cell 3 1', '', 'cell 3 2','cell 3 3', '', '', 'cell 3 5', '');
le_tableau[3]=new Array('', '', '', '', '', '', '', '');
le_tableau[4]='';
le_tableau[5]=new Array('cell 6 1', '', 'cell 6 2','cell 6 3', '', '', 'cell 6 5', '');
alert(compact2DMatrix(le_tableau)); |