Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Array contrario

  1. #1

    Array contrario

    Ciao, premetto che sono alle prime armi con l'uso di cicli e javascript, abbiate pazienza ...
    Ho provato a svolgere un esercizio e non mi viene. Cosa sbaglio? Ho un array e devo scrivere il suo contenuto all'interno di un array b al contrario.

    <html>
    <head>
    <script>

    function rigira (A,B){
    var i;
    contr=0;

    for (i=A.length-1; i>=0; i--){
    contr=A;
    A=B;
    B=contr;
    }
    }

    var A = new Array (1,3,5,8,23);
    var B = new Array ();
    document.write (contrario (A,B));





    </script>
    </head>
    </html>


    Ho provato ma non restituisce..Fustigatemi ma aiutatemi

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il nome della function e' rigira e tu richiami contrario()...
    Per il resto:
    codice:
    function rigira (A,B){
    for (var i=0;i<A.length; i++){
    	B[i] = A[A.length-1-i];
    }
    return B
    }
    var A = new Array(1,3,5,8,23);
    var B = new Array();
    document.write(rigira(A,B));
    </script>
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3

    ..

    ti ringrazio davvero dell'aiuto, spero di evitare in futuro con la pratica...

  4. #4
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    In effetti non è neppure necessario passare i parametri (A,B) alla funzione rigira()
    A e B sono due Variabili che lo SCRIPT già trova dichiarate, come Globali; potrebbero anche essere interne alla funzione (Locali).

    Qui seguo anche un altro criterio di condurre il ciclo FOR, a scopo di esempio, seppur preferisca quello già riportato da "br1":
    codice:
    <script>
    function rigira (){
    var A = new Array(1,3,5,8,23);
    var B = new Array();
    var n=0;
     for (var i=A.length-1; i>=0; i--){
          B[n] = A[i];
          n++;
     }
    return B
    }
    document.write(rigira());
    </script>
    i ora scorre A all' indietro; e per B si impiega un nuovo contatore n

    Ci sarebbe poi la reverse() che è una funzione nativa di JavaScript deputata a questo scopo:
    codice:
    <script>
    
    var A = new Array(1,3,5,8,23);
        A.reverse(); 
    document.write(A);
    
    </script>
    Così però l' Array originale mi sparisce, viene completamente sovrascritto dal nuovo A

    Se lo voglio conservare, posso fare cosi:
    codice:
    var A = new Array(1,3,5,8,23);
    var B = new Array();
        B = A
        B.reverse(); 
    document.write(B);
    
    </script>
    duplicandolo nel B che poi rigiro.

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    codice:
    var array_rovesciato = array_dritto;
        array_rovesciato.reverse();
    https://developer.mozilla.org/en-US/.../Array/reverse
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  6. #6
    @fcaldera: cosi' array_rovesciato e' solo una reference ad array_dritto, quindi chiamando

    codice:
    array_rovesciato.reverse();
    rovesci anche array dritto.

    Il modo giusto per ottenere una deep copy dell'array e':
    codice:
    var array_rovesciato = array_dritto.slice();
        array_rovesciato.reverse();
    https://developer.mozilla.org/en-US/.../Array/reverse [/QUOTE]
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  7. #7
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da mxa

    Il modo giusto per ottenere una deep copy dell'array e':
    giusto, ho fatto un assegnamento apposta ma poi mi scordato il metodo per fare la copia
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.