tonyven ha scritto:
La variabile arrF l'ho inizializzata all'inizio ponendo un array vuoto.
Se è settata perchè mi dice che invece è 0?
Se hai inizializzato
arrF con un array vuoto, vuol dire che hai creato appunto un array vuoto, ossia privo di elementi, e puoi inserirne di nuovi "dinamicamente" con
push(), ma non puoi usare un indice per accedere all'elemento i-esimo poiché questo ancora non esiste.
Se accedi all'array usando un indice (es.
arrF[1]), questo non funzionerà poiché... l'hai detto tu, l'array è vuoto.
La soluzione quindi non è creare un array vuoto ma
crearne uno che già allochi lo spazio necessario per gli elementi che devi solo valorizzare, ossia dare una lunghezza all'array. Oppure, come predetto, lasciarlo vuoto ma usare
push() per aggiungere elementi.
Attenzione che stai lavorando con una matrice, ossia un array di array, quindi ciò significa che per poter scrivere qualcosa del tipo
arr[x][y] dovrai ripetere la cosa al secondo livello. Mi spiego: pur dimensionando già dall'inizio la dimensione dell'array, ciascuno dei suoi elementi è di nuovo un array, quindi dovrà essere inizializzato allo stesso modo, ovvero dovrai dimensionare il primo livello e, per ciascun elemento, assegnare come valore un array anch'esso dimensionato per contenere i valori di secondo livello, ossia i valori numerici.
Un pezzo di codice per spiegare:
// Dimensiona l'array di primo livello.
let a = new Array(N);
// Ciascun elemento dell'array è a sua volta un array (di secondo livello).
a[0] = new Array(M);
// Usando gli indici, si accede all'array di primo livello
// poi a quello di secondo livello, salvando il valore numerico.
a[i][j] = Math.random();
Ciao!