Problema formattazione output

di tonyven il
5 risposte
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

  • 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()
    
  • 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
  • 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)
            }
            
    
  • 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
Devi accedere o registrarti per scrivere nel forum
5 risposte