Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Array Associativo

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    89

    Array Associativo

    Se io avessi bisogno di creare un array associativo che associ a ogni data tutti gli eventi di quel giorno, ad esempio

    eventi=new array();
    eventi["1/1"]=concerto;
    eventi["2/1"]=torneo;
    eccetera

    non ho problemi perchè poi cerco eventi["1/1"] e mi ritorna concerto

    se però avessi più di un evento al giorno come posso fare?

    per definirlo penso si faccia analogo a prima mettendo tutti gli eventi del giorno separati da virgola e dentro a parentesi tonde

    eventi["1/1"]=(concerto, torneo);

    poi per richiamarli come si fa?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Vedi se qui puoi trovare spunti/consigli.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    89
    intanto grazie mille per la risposta,
    ho già letto quella guida e anche quella pratica di javascript e mi è rimasto il dubbio su come utilizzare un array associativo di due o più array.

    se non ricordo male la guida fa l'esempio di unire gli alunni suddivisi in classi

    cioè classe1 e classe2 composti dagli alunni e unire in un array somma l'intera scuola per intenderci.

    ecco fino a li credo di esserci arrivato, definisci il primo array, il secondo eccetera, poi crei u nuovo array che lo definisci come somma dei due precedenti.

    Se poi io voglio richiamare tutti gli elementi associati al primo array (da quello somma ovviamente) come faccio?


    Quello che dovrei fare io è una sorta di post-it che mi compare quando apro la home che mi dice i prossimi tot eventi organizzati. volevo che uno definendo su un foglio .txt gli array per ogni data il programma fosse in grado di unire tutto e poi in quel post-it dividere tutto nuovamente per data e mostrarli. (il fatto che voglia unirli prima è per due motivi, il primo che mi serve su un altra pagina tutto unito, e poi che lo devo dare in mano a uno che il computer lo sa usare poco in questo ambito e quindi poi non saprebbe come fare ogni volta che creau un array nuovo andare ad aggiornare il riferimento sulla pagina, avendone uno singolo basta che lui modifichi in modo appropriato solo il .txt)

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma non saprei non conosco così bene le array d'aiutarti, posso dirti sicuro sia meglio usare file.txt e array al posto di db linguaggio server? Non vorrei che il tutto diventasse molto pesante da gestire per il client.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    89
    eh lo so...solo che l'hosting che hanno preso con poca lungimiranza costringe a pagare per avere anche il db livello zero e quindi se riesco a farlo senza sarebbe meglio...

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ho capito in tal caso attendi aiuti da un esperto in materia, oppure valuta col committente se è il caso di integrare hosting.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Originariamente inviato da andmx
    eventi=new array();
    eventi["1/1"]=concerto;
    eventi["2/1"]=torneo;

    ... eventi["1/1"] e mi ritorna concerto
    attento che mica puoi essere così approsimativo nella sintassi, l' inizializzazione:

    eventi=new array(); dovrà diventare
    eventi=new Array(); o tutto si blocca !!!

    Gli articoli poi, in quanto stringhe textuali dovranno essere racchiusi tra apici, ' singoli o " doppi altrimenti anche qui, tutto si blocca !!!
    A meno che concerto (senza apici) non sia già stata definita come variabile, e allora è lei che si porta dietro la stringa,
    -o- non si tratti di numeri, che allora puoi compilare con o senza apici.

    Ora sarà con eventi["1/1"][0] che accedi a concerto nella gestione di un Array bi-dimensionale: gli articoli (items) dell' Array primario, sono Array a loro volta, che a loro volta contengono i dati.
    codice:
    <html><body>
    
    <script>
    
    var torneo = "carosello"; //nell' Array scriverò  torneo  senza apici 
    
    var eventi = new Array();
    
    eventi["1/1"] = new Array("concerto", "comizio", "fiaccolata", 5.6, "8");
    eventi["2/1"] = new Array(torneo, "controllo antidoping", "arresti");
    
    document.write(eventi["2/1"][1]);
                                     document.write("
    ");
    document.write(eventi["1/1"][3]);
    
    </script>
    
    </body>
    </html>
    Fai un po' di esperienza editando gli indici tra le [] nei document.write

    Quindi, si dovrà lasciare all' Utente, la scelta di quale articolo dell' Array primario (associativo) si debba prendere in esame; per poi estrapolare in automatico invece, tutti gli articoli contenuti nel sub-Array così individuato.
    Scrivere semplicemente document.write(eventi["1/1"]); potrebbe già essere una prima soluzione: ti fa vedere tutto il contenuto del sub-Array.

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    89
    Gentilissimo davvero!!! ero stato approssimativo perchè ora mi interessava l'idea, cmq davvero grazie moltissimo!!!

  9. #9
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    L' Interazione con l' Utente

    Mi fa piacere trovare tuo riscontro.
    Nota che funziona sia eventi["1/1"][0] che eventi["1/1"]["0"] cioè l' index numerico risponde anche come associative index
    Poi, non so se stai proseguendo nel proposito, ma è possibile scrivere il sub-Array in una forma più snella, sulle corde della tua "improvvisazione":
    Originariamente inviato da andmx
    .. gli eventi del giorno separati da virgola e dentro a parentesi tonde

    eventi["1/1"]=(concerto, torneo);
    solo che devono impiegarsi parentesi quadre; e ovviamente, gli apici.
    Questa potrebbe quindi diventare una forma (literal Array) più "confortevole" per l' Utente che deve compilare l' Array degli eventi:
    codice:
    eventi["1/1"] = [ "ore 10:00 - Sveglia all' alba",
                      "ore 12:45 - La grande abbuffata",
                      "in serata - Proiezione de: \"La corazzata Potiomkj\""   //(1)
                    ];
    
    eventi["2/1"] = [ "L' altra giornata, vedremo"   //(2)
                     
                     ];
    • Può andare a capo tra un articolo e l' altro (alla virgola);
    • Non deve però scapparci la virgola dopo l' ultimo articolo;
    • Non omettere la chiusura ]; quadra puntovirgola;
    • Può immettere ogni carattere, pezzi di codice HTML compresi, ma se occorre replicare l' apice "tecnico" per esigenze di testo, va "escapato" col back slash (1). L' uso alternato di singoli e doppi apici, non comporta interferenza (2).

    ... che lui modifichi in modo appropriato solo il .txt)
    Il blocco si compila sì come un file di testo, ma va salvato con estensione .js non .txt

    databaseeventi.js

    L' inizializzazione dell' Array possiamo lasciarla (sopra !) nel Documento principale; dove quindi avremo:

    codice:
    <html>
    <head>
    
    <script type="text/javascript">
    
    var eventi = new Array();
    
    //eventuale altro JavaScript 
    </script>
    
    <script type="text/javascript" src="databaseeventi.js"></script>
    
    <script type="text/javascript">
                                                 //funzioni JS necessarie
    function accediAlDato(){
     theForm = document.forms["main"];
     one = theForm.first.value;
     two = theForm.second.value;
     alert(eventi[one][two]);
     }
    
    </script>
    </head>
    e prova a concludere con questo nel BODY:
    codice:
    <body>
    <form name="main">
    <div align="center"><h2>
    
    eventi[<input name="first" type="text" size="2">][<input name="second" type="text" size="2">]
    <input type="button" value="richiama" onclick="accediAlDato();"></h2>
    
    </div>
    </form>
    </body>
    </html>
    Nelle textbox immetterai 1/1 e non "1/1", e 0, indifferentemente che trattasi di associativo o numerale; per questo ti ho fatto quella nota in apertura, dai campi INPUT JavaScript raccoglie i VALUE come stringhe, quindi elabora come:

    eventi["1/1"]["0"]

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.