Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    ottenere l'indice dell'elemento in matrice


    gentilmente, qualcuno sa dirmi come posso ottenere il valore dell'indice di un elemento di un oggetto array?
    ottenere il valore partendo dall'indice è ovvio......il contrario, no!
    ho provato con array.toString e poi string().indexOf.....ma mi restituisce il valore dell'indice contando le lettere e non gli elementi matrice.....era prevedibile.....solo che non riesco ad utilizzare indexOf per un Array.

    grazie mille
    niccolo

  2. #2
    Io non ne conosco molto di codice, probabilmente c'è un comando apposta. Ma se non c'è, forse potresti fare così:
    codice:
    vett_indici=[];
    for(i=0; i<tuo_array.length(); i++) {	
    vett_indici = (tuo_array[i]==elem_cercato) ? vett_indici.concat(i) : vett_indici;
    }

  3. #3

    ....grazie del consiglio

    grazie mille dell'aiuto.....ma ancora non mi riescr......

  4. #4
    Bah!!! Mi c'erano scappate due parentesi in più!
    ora và che è una meraviglia

    codice:
    vett_indici=[];
    for(i=0; i<tuo_array.length; i++) {	
    vett_indici = (tuo_array[i]==elem_cercato) ? vett_indici.concat(i) : vett_indici;
    }
    messaggio = (vett_indici.length>0) ? vett_indici : "L'elemento cercato non è presente";
    trace(messaggio);
    Le ultime due righe sono di prova, per farti vedere che lo script funge, puoi toglierle quando vuoi
    Sorry ma prima avevo un pò troppo panettone nel sangue

  5. #5

    ottimo!

    fantastico! funziona
    ti ringrazio moltissimo, ma......mi spiegheresti anche la logica della cosa? non ci sono ancora arrivato!
    grazie mille

  6. #6
    E' semplicissimo:

    elem_cercato è ovviamente la stringa o il numero che vuoi cercare all'interno dell'array;
    tuo_array è l'array in cui vuoi effettuare la ricerca;
    vett_indici sarà il vettore contenente gli indici che identificano l'elemento cercato nell'array.

    Attraverso un ciclo for, viene esaminato ogni elemento dell'array: se è uguale all'elemento cercato, allora nel vettore finale degli indici viene messo l'indice corrente.

    Se il problema era la sintassi che ho usato, ovvero quel punto interrogativo e quei due punti, beh quello non è altro che un modo per scrivere "if... else...":

    a = (b==c) ? d : e;

    equivale a:

    if (b==c) {
    a = d;
    } else {
    a = e;
    }

    Quindi, un altro modo per scrivere quello script può essere questo:

    codice:
    vett_indici=[];
    for(i=0; i<tuo_array.length; i++) {
    if (tuo_array[i]==elem_cercato)
    vett_indici = vett_indici.concat(i);
    }
    La funzione concat non fa altro che aggiungere il valore di i a vett_indici.

  7. #7
    grazie mille della spiegazione.....
    ma ormai sei il mio guru e ti dovrei chiedere un altro aiutino! :tongue:
    devo ottenere la stringa che ha indice precedente a quello ottenuto ...io ho provato con:

    onClipEvent(enterFrame)
    {_root.indice=vett_indici;
    _root.ev = mio_Array[(vett_indici)-1];

    dove _root.indice è un testo dinamico che restituisce il valore di vett_indici è dove _root.ev è un testo dinamico che dovrebbe darmi mio_Array[vett_indici - 1]!

    ma se vett_indici è 1 o 3 o 7 ecc _root.ev non mi restituisce niente!
    invece se vett_indici è = 7 e io scrivo _root.ev = mio_Array[6]; il risultato è giusto
    .....credo che flash non attribuisca a vett_ un valore numerico...
    come posso fare?

    grazie mille ancora per la tua pazienza
    niccolo

  8. #8
    Beh tu non puoi fare operazioni fra un vettore e un numero, non trovi? vett_indici in generale non è un numero, ma è un vettore: infatti l'elemento cercato può comparire più volte nel tuo array, e quindi ci possono essere vari indici associati ad esso.
    Se tu vuoi ricavare tutte le stringhe con indice precedente, prova così:
    codice:
    vett_indici=[];
    ev = [];
    for(i=0; i<tuo_array.length; i++) {
    	if (tuo_array[i]==elem_cercato) {
    		vett_indici = vett_indici.concat(i);
    		ev = ev.concat(tuo_array[i-1]);
    	}
    }
    L'ho anche provato, nonostante l'ora, e sembra andare
    Chiaramente, manca il controllo di errore nel caso in cui l'elemento cercato sia in posizione 0, caso in cui la stringa di posizione -1 non esiste. Se ti serve lo aggiungo.


  9. #9
    Ciao Marsellus

    con la tua funzione mi è venuta voglia di fare una demo che può essere di esempio un po per tutti, (tutta in AS)

    qui l'indirizzo

    Trovare n ELEMENTI contenuti in un ARRAY

    http://www.mclink.it/personal/MH5603...engonoXXX.html


  10. #10
    Ma molto carino!! Bravo rempox! Può essere davvero di aiuto
    Solidarizzo con te per aver fatto tutto in AS, anch'io amo questo modo di fare

    PS. se posso, una piccolissima nota: il mio nick si scrive marSellus con la esse. Cmq puoi omettere tranquillamente il mio nome: non è niente di speciale come funzione, e il lavoro è tutto tuo. Davvero



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.