Problema formattazione output

di il
5 risposte

Problema formattazione output

Ciao a tutti. Mi sono arenato sulla formattazione dell'output di un esercizio che sto facendo. L'esercizio chiede di inserire 2 valori N,M per generare una matrice con numeri casuali. Fin qui ho scritto del codice:

function crea(){
    M=parseInt(document.getElementById("righe").value);
    N=parseInt(document.getElementById("col").value);
    arr=new Array();
    let text="";
     for(i=0; i<M;i++){
      
      arr.push([i]);

      for(j=0; j<N; j++){
        arr[j]=Math.floor((Math.random()*100)+1);

        text += arr[j]+","+"<br>";
       
      document.getElementById("vis").innerHTML=text;
        
      }
      
    }
    
  }
Quello che non riesco a fare è formattare l'output che dovrebbe essere del tipo:
Matrice=[[9,2,4],[5,2,1]] per esempio.
In particolare l'istruzione : text +=arr[j]+","+"<br>" è quella che mi da più filo da torcere. Come si può fare? Spero di essere stato chiaro.

5 Risposte

  • Re: Problema formattazione output

    Non ho avuto tempo di mettere i riferimenti del DOM, ho solo testato velocemente la cosa con il console.log, vedi se ti puo essere d'aiuto.
    
      function crea() {
                const cols = 3
                const rows = 5
                let arr = []
                const matrice = []
                let rnd = 0
    
                for (let i = 0; i < cols; i++) {
                    arr = []
                    for (let j = 0; j < rows; j++) {
                        rnd = Math.floor((Math.random() * 100) + 1);
                        arr.push(rnd)
                    }
                    matrice.push(arr)
                }
                console.log(matrice)
            }
            crea()
    
  • Re: Problema formattazione output

    Grazie tanto ninja72. Il tuo codice funziona perfettamente con la console. Con il DOM invece ci sono problemi. Per comodità posto il codice:
    
    <html>
        <body>
            <input type="text" id="righe">
            <input type="text" id="col">
            <input type="button" value="Elabora" onclick="crea()">
            <script src="righe_colonne.js" ></script>
            <div id="vis"></div> 
    
        </body>
    </html>
    

    Il problema rimane sempre la visualizzazione finale che non riesco a formattare come vuole l'esercizio. Utilissimo il tuo codice.
    Saluti
  • Re: Problema formattazione output

    Bastano delle semplici modifiche, vedi se funziona ora. ciao
    
     const viewData = document.getElementById('vis')
    
            function crea() {
                const rows = document.getElementById('righe').value
                const cols = document.getElementById('col').value
                let arr = []
                const matrice = []
                let rnd = 0
    
                for (let i = 0; i < cols; i++) {
                    arr = []
                    for (let j = 0; j < rows; j++) {
                        rnd = Math.floor((Math.random() * 100) + 1);
                        arr.push(rnd)
                    }
                    matrice.push(arr)
                }
                viewData.textContent = JSON.stringify(matrice)
            }
            
    
  • Re: Problema formattazione output

    GRANDE NINJA72!! Funziona. Ho dovuto mettere la prima riga dentro la funzione. Ora funziona come richiesto. A quanto pare le mie conoscenze del DOM sono ancora parecchio superficiali. Comunque ci sono parecchie cose che non capisco. Perchè ci sono delle istruzioni senza il ; finale e funziona lo stesso? Da dove salta fuori JSON? Mi prenderò del tempo per studiarle. Grazie ancora.
    Saluti
  • Re: Problema formattazione output

    Figurati, il punto è virgola è opzionale da molto tempo ormai, il metodo "stringify()" l'oggetto JSON in questo caso viene utilizzato per rendere visibile la struttura dell'array matrice con il relativi dati nella view, senza vedresti solo i dati (i numeri).

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON?retiredLocale=it

    Ciao
Devi accedere o registrarti per scrivere nel forum
5 risposte