Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200

    Dichiarazione matrice bidimensionale e sort

    Per favore, qualcuno può dirmi come caspita si dichiara una matrice bidimensionale e come la si referenzia? Vorrei anche sapere come si sorta tale matrice usando Math.sort
    Poniamo come esempio di voler creare una matrice contenente la tavola pitagorica dei primi 12 numeri (quindi 12 X 12).

    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.

  2. #2

    Re: Dichiarazione matrice bidimensionale e sort

    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
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    200
    Ugh! Grazie Andr3. Non avrei mai pensato che un linguaggio di programmazione avesse tali limiti. Le matrici nella programmazione si usano come il pane. Comunque, ovviamente, avendo scoperto l'arcano, adesso posso andare avanti. Però è sempre un bagno di sangue ogni volta che si cerca di ottenere qualcosa. Le documentazioni per quanto vantini di essere "complete" sono in realtà insoddisfacenti. Forse è per questo che ci sono forum come questi dove solo l'esperienza di chi ha empiricamente sbattuto la testa N volte, prima di trovare l'informazione giousta, può darti un aiuto. E' un vero peccato. E' incredibile, ho consultato fior di manuali e siti Internet (anche i link consigliati da html.it) eppure non uno tra questi mi ha dato una valida risposta. Eppure pur essendo sempre presenti i paragrafi "Array", mai nessuno ti dice come creare matrici.

    E si perde un fottìo di tempo per delle fesserie come ad esempio visualizzare 2 immagini contigue senza alcuno spazio tra loro. Margin 0,Padding 0... ma niente, niente da fare, viene sempre messo uno spazio tra immagine ed immagine. Che disperazione.

    Grazie davvero del contributo, se non fosse per l'aiuto che questa comunità può offrire, quì non si batterebbe un chiodo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.