Originariamente inviato da Calaf1966
Se poi mi voleste spiegare perchè sembra impossibile reperire tale informazione sulle varie guide Javascript sparse in Internet, mi illuminerete. Ho già perso delle ore nella invana ricerca.
Grazie.
molto semplice, JavaScript non supporta vere e proprie matrici bidimensionali, ma tramite matrici di matrici ed un uso intelligente della sort (non la Math ... ) puoi risolvere
codice:
function BiDimensionalMatrix(m, n){
for(var matrix = new Array(m), i = 0; i < m; i++)
matrix[i] = new Array(n);
return matrix;
};
var m32 = BiDimensionalMatrix(3, 2),
row = 0,
col = 0;
m32[row][col++] = 1;
m32[row][col++] = 2;
// incremento una riga
row++
// resetto la colonna
col = 0;
m32[row][col++] = 3;
m32[row][col++] = 4;
// ... come prima ...
row++;
col = 0;
m32[row][col++] = 5;
m32[row][col++] = 6;
alert(m32.join("\n"));
/*
1,2
3,4
5,6
*/
la sort è un metodo di Array che ti permette di utilizzare una callback, in questa callback riceverai i valori a e b che in questo caso saranno le varie righe.
Immagina di voler spostare le righe per ordine decrescente:
codice:
function getTotalRowSize(matrix){
for(var i = 0, total = 0; i < matrix.length; i++)
total += matrix[i];
return total;
};
m32.sort(function(a,b){
var aSize = getTotalRowSize(a),
bSize = getTotalRowSize(b);
return aSize < bSize ? 1 : aSize > bSize ? -1 : 0;
});
alert(m32.join("\n"));
/*
5,6
3,4
1,2
*/
Non avendo supporto effettivo delle matrici bidimensionali il sorting per colonna è comunque fattibile ma più macchinoso ... spero che almeno con questi esempi tu abbia le basi per provare un pò di soluzioni