[Javascript] problema nell'utilizzo di un array

Ctrl+Alt+Mario

Nuovo Utente
27 Ott 2018
2
0
1
Buongiorno a tutti. Mi sono cimentato da poco ad usare gli array su javascript, e per mettere in pratica quanto appreso ho provato a fare un banale esercizio, senza però ottenere un risultato soddisfacente. Non capisco dove sia l’errore. Nello specifico, nell’esercizio ho messo 2 bottoni: uno consente di aggiungere all’array i numeri immessi in input, l’altro consente di sommare i valori contenuti nel vettore. Né la stampa dei numeri, né la loro somma risulta essere corretta.

Codice:
<html>

<head>
                <script type="text/javascript">
                var vettore = new Array();  
    
                function ControllaNumero(){
                               numeri.numero_input.style="color: black";      
                               var numero = numeri.numero_input.value;
                               var flag=true;
                               if(isNaN(numero)){
                                               flag=false;
                                               numeri.numero_input.style="color: red";
                                               alert("Valore non accettabile!");
                               }
                               return flag;

                }

                function aggiungi(){
                               var i;
                               if(ControllaNumero()==true){
                                               vettore.push(parseInt(numeri.numero_input.value));
                                               for(i=0; i<vettore.length; i++){
                                                               numeri.stampa.value=numeri.stampa.value+" "+vettore;
                                               }
                                               alert(vettore);
                               }
                               else{
                                               alert("err");
                               }
                }

                function calcola(){
                               var i;
                               var risultato;
                               for (i=0; i<vettore.length; i++) {
                                       risultato=risultato+vettore;

                               }
                               numeri.stampa.value=risultato;
                }
                </script>
</head>
<body>
   <form name="numeri">
       <input name="numero_input" type="text" onKeyUp="ControllaNumero()">
       <input name="b1" type="button" value="AGGIUNGI" onClick="aggiungi()">
       <input name="b2" type="button" value="CALCOLA" onClick="calcola()">
       <input name="reset" type="reset" value="reset">
       <textarea name="stampa" rows="10" cols="20" readOnly>
       </textarea>
   </form>
</body>

</html>
 
Ultima modifica di un moderatore:

WmbertSea

Utente Attivo
28 Nov 2014
205
32
28
Salve, per la visualizzazione di un array puoi utilizzare il metodo join() che sostanzialmente restituisce una stringa testuale della serie di valori suddivisi da un eventuale separatore. Questo ti evita anche di usare un inutile ciclo.

La tua funzione aggiungi() potrebbe essere sistemata in questo modo:
Codice:
function aggiungi() {
   if (ControllaNumero() == true) {
      vettore.push(parseInt(numeri.numero_input.value));

      numeri.stampa.value = vettore.join(' ');

   } else {
      alert("err");
   }
}

Nella funzione calcola() invece c'è qualche imprecisione:

- la variabile risultato dovrebbe essere inizializzata con un valore numerico dal momento che devi usarla con operatori matematici. Nella dichiarazione puoi assegnargli magari il valore 0 (zero).

- nella somma che effettui all'interno del ciclo, dovresti sommare man mano i singoli valori dell'array, non l'intero array.
Qui stai sommando l'intero array, capisci da te che non può andare bene:
Codice:
for (i = 0; i < vettore.length; i++) {
   risultato = risultato + vettore;
}
dovrà piuttosto essere una cosa del genere (vedi l'indice che ho aggiunto a vettore):
Codice:
for (i = 0; i < vettore.length; i++) {
   risultato = risultato + vettore[i];
}

Riepilogando, la funzione calcola() potrebbe essere sistemata in questo modo:
Codice:
function calcola() {
   var i;
   var risultato = 0;
   for (i = 0; i < vettore.length; i++) {
      risultato = risultato + vettore[i];
   }
   numeri.stampa.value = risultato;
}

In alternativa è possibile usare il metodo reduce(), ottenendo peraltro un codice più compatto.
La funzione calcola() potrebbe essere riscritta in questo modo:
Codice:
function calcola() {
   numeri.stampa.value = vettore.reduce(function(totale, numero) {
      return totale + numero;
   });
}

Presumo poi che una volta ottenuta la somma tu voglia magari usare quel valore come unico valore dell'array per poter poi eseguire ulteriori aggiunte/calcoli sulla base del nuovo risultato, cosa che ora il tuo codice non fa; in tal caso, oltre l'output mostrato a video, dovresti aggiornare opportunamente lo stesso vettore. Dato però che per te si tratta di materia di studio, lascio a te cercare di capire come impostare eventuali sviluppi. Buon proseguimento.
 
  • Like
Reactions: Ctrl+Alt+Mario

Ctrl+Alt+Mario

Nuovo Utente
27 Ott 2018
2
0
1
Salve, per la visualizzazione di un array puoi utilizzare il metodo join() che sostanzialmente restituisce una stringa testuale della serie di valori suddivisi da un eventuale separatore. Questo ti evita anche di usare un inutile ciclo.

La tua funzione aggiungi() potrebbe essere sistemata in questo modo:
Codice:
function aggiungi() {
   if (ControllaNumero() == true) {
      vettore.push(parseInt(numeri.numero_input.value));

      numeri.stampa.value = vettore.join(' ');

   } else {
      alert("err");
   }
}

Nella funzione calcola() invece c'è qualche imprecisione:

- la variabile risultato dovrebbe essere inizializzata con un valore numerico dal momento che devi usarla con operatori matematici. Nella dichiarazione puoi assegnargli magari il valore 0 (zero).

- nella somma che effettui all'interno del ciclo, dovresti sommare man mano i singoli valori dell'array, non l'intero array.
Qui stai sommando l'intero array, capisci da te che non può andare bene:
Codice:
for (i = 0; i < vettore.length; i++) {
   risultato = risultato + vettore;
}
dovrà piuttosto essere una cosa del genere (vedi l'indice che ho aggiunto a vettore):
Codice:
for (i = 0; i < vettore.length; i++) {
   risultato = risultato + vettore[i];
}

Riepilogando, la funzione calcola() potrebbe essere sistemata in questo modo:
Codice:
function calcola() {
   var i;
   var risultato = 0;
   for (i = 0; i < vettore.length; i++) {
      risultato = risultato + vettore[i];
   }
   numeri.stampa.value = risultato;
}

In alternativa è possibile usare il metodo reduce(), ottenendo peraltro un codice più compatto.
La funzione calcola() potrebbe essere riscritta in questo modo:
Codice:
function calcola() {
   numeri.stampa.value = vettore.reduce(function(totale, numero) {
      return totale + numero;
   });
}

Presumo poi che una volta ottenuta la somma tu voglia magari usare quel valore come unico valore dell'array per poter poi eseguire ulteriori aggiunte/calcoli sulla base del nuovo risultato, cosa che ora il tuo codice non fa; in tal caso, oltre l'output mostrato a video, dovresti aggiornare opportunamente lo stesso vettore. Dato però che per te si tratta di materia di studio, lascio a te cercare di capire come impostare eventuali sviluppi. Buon proseguimento.

Grazie mille per le dritte!
 
Discussioni simili
Autore Titolo Forum Risposte Data
grgfede Problema javascript con aruba Javascript 1
L [Javascript] Problema salvataggio dati in db Javascript 1
S [Javascript] Problema costrutto if Javascript 0
S [Javascript] Problema con condizione "if" Javascript 2
Z Problema Galleria Javascript Javascript 1
trattorino [Javascript] scrool top problema Javascript 1
P [Javascript] problema menu responsive su aruba, editor bk Javascript 1
G [Javascript] Problema parametro passato con ajax Javascript 4
G [Javascript] Problema modal con scrollbar Javascript 0
A [Javascript] problema con draggable Javascript 0
L [javascript]problema funzione per webapi Javascript 4
A PROBLEMA INTERAZIONE PHP E JAVASCRIPT PHP 1
L [PHP] problema con upload e javascript (upload multiplo) Javascript 2
Antonio Nervi [Javascript] Problema visualizzazione banner accettazione cookies Javascript 6
borgo italia [Javascript] un problema con ckeditor Javascript 3
bubino8 [Javascript] Problema function eseguita solo la prima volta Javascript 1
A [Javascript] Problema visualizzazione posizione corrente su mappa Javascript 2
A Problema con getCurrentPosition e passaggio variabili da javascript a PHP Javascript 3
F [Javascript] Problema su sticky sidebar Javascript 0
S [Javascript] [HTML] problema nella stampa degli elementi della pagina Javascript 3
W [Javascript] Problema: Copiare testo da un iframe? Javascript 4
L Problema con javascript e server Javascript 3
S [Javascript] Problema richiamo funzione Javascript 8
F [Javascript] Problema funzione jquery con elementi css esterni Javascript 1
A PROBLEMA SITO SU JAVASCRIPT Javascript 6
E [Javascript] problema con margine quando viene mostrato div Javascript 0
A [Javascript] Problema focus() solo su osx Javascript 2
S Problema con script php-javascript PHP 2
L [WordPress] Problema Javascript nel log del browser WordPress 1
S problema con gli array in javascript Javascript 12
M problema ciclo javascript Javascript 4
C Problema con OnClick Javascript Javascript 13
A problema : codice javascript Javascript 1
C Problema javascript su chrome e firefox Javascript 2
H problema con select dinamiche e javascript Javascript 0
M Problema con aggiornamento variabili da web server con javascript Javascript 1
X Problema con php e javascript jQuery 0
M problema con JavaScript Javascript 2
F Problema di programmazione in javascript Javascript 2
V Problema php / javascript Presentati al Forum 1
S Problema con javascript Javascript 3
F [risolto] Problema javascript Internet Explorer Javascript 1
S Problema non riconosce javascript Javascript 7
S Problema javascript singoli apici Javascript 3
S Problema PHP + Javascript PHP 1
T [Javascript] [RISOLTO] Problema con Google Maps e "Zero_Results" Javascript 11
C Problema form javascript che non funziona Javascript 4
P Problema ocon verifica campo in javascript Javascript 7
S Problema trasformazione array php in javascript PHP 0
F Javascript: problema con onclick event Javascript 3

Discussioni simili