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

Discussione: Controllo due array

  1. #1

    Controllo due array

    Come posso realizzare un cotrollo su due array, il quale restituisce un array (opure modifica il primo) che è il risultato del primo array escluso gli elementi del secondo array.

  2. #2
    Penso che sia l'inverso di concat

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Potresti provare in questo modo:

    arr3=newArray(arr1.length);
    for (var i=0; i<=arr1.length; i++) {
    arr3[i]=arr1[i];
    }

    for (var i=0; i<=arr1.length; i++) {
    var elem1=arr1[i];
    for (var d=0; d<=arr2.length; d++) {
    var elem2=arr2[d];
    if (elem1==elem2) {
    arr3.splice(elem1);
    }
    }
    }
    in cui arr1 ed arr2 sono gli array che vuoi confrontare ed arr3 è l'arrey finale contenete solo i valori di arr1 che non comaiono in arr2.
    Due precisazioni: innanzi tutto non sono sicuro che il tutto funzioni (non l'ho neppure testato) e anche se funzionasse non devi avere due elementi uguali in uno stesso array.
    Spero di esserti stato utile
    Secan

  4. #4
    Grazie 1000 per l'interessamente, ma non funziona!
    Cioè non da errori, anche se spara fuori in coda all'Array3 un 'undefinided', ma non elimina dall'Array1 i valori contenuti nell'Array2.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Infatti l'array1 non dovrebbe essere modificato (se si togliessero degli elementi da esso, la sua lunghezza continuerebbe a variare e il secondo ciclo di for non potrebbe funzionare). La funzione dovrebbe IN TEORIA lasciare invariati i tuoi array di partenza e crearne un terzo (arr3) che è uguale al primo meno il secondo. Detto questo, ecco i miei dubbi:
    1) per i primi due cicli di for ho utilizzato due varabili "contatori" con lo stesso nome: prova a cambiare una delle due
    2) non sono sicuro della sintassi per il metodo splice(), ma non sono riuscito a trovare della documentazione per verificarla
    3) a naso, potrei pensare che l'undefined che ritrovi in coda all'array3 possa dipendere dal fatto che gli array 1 e 2 non abbiano lo stesso numero di elementi
    Fammi sapere se posso esserti utile in altro modo o se riesci a trovare la soluzione (nel frattempo ci penserò un po' su)
    Secan

  6. #6
    Scusa, mi sono espresso male, lo so che non elimina elementi dall'array1, ma se ne realizza uno nuovo, ho scritto velox.

    Per SLICE: ho trovato questa documentazione:

    cars = ["Mercedes", "Ford", "Chrysler", "Honda", "Volvo"]
    document.write(cars.splice(1,2))

    secondo me il problema non dovrebbe essereci, ma dovrebbe girare bene.

    Una cosa, visto che a priori gli diciamo che la dimensione dell'arr3 è praticamente identico a quello di arr1, ma dovrebbe essere quello di arr1 - arr2!

    Per il problema udefined ho provato è ho visto che veniva aggiungo un elemento, quindi ho modificato:

    for (var i=0; i<=comitati.length; i++) {

    in

    for (var i=0; i<=comitati.length-1; i++) {

    ed infatti quello in più non compare!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Si, inizialmente gli diciamo che la sua dimensione è uguale a quella dell'array1 perchè in principio arr3 è la copia esatta di arr1. In seguito eliminiamo da arr3 tutti gli elementi presenti in arr2.
    Il motivo di questa scelta è il seguente: lo script prende il primo elemento di arr1 e lo confronta con tutti quelli di arr2 e, se trova una corrispondenza, cancella l'elemento da arr3.
    Se provassiomo a fare il contrario (ossia a confrotare tutti gli elementi ed inserire quelli diversi) potrebbe succedere una cosa simile:

    arr1 {a,b,c}
    arr2 {a,d,e}
    arr3 {a,a,b,b,b,c,c,c}

    Secan

  8. #8
    No no, ma l'avevo capito!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    709
    Aspetta, mi sono un attimo perso: se non vengono segnalati errori, l'arr3 viene correttamente popolato ed hai eliminato il problema dell'undefined in coda, cos'è che non funziona? Cosa contiene alla fine arr3?
    Secan

  10. #10
    praticamente arr3 è la copia di arr1, secondo me il problema e nell'assegnazione dell'elemento da eliminare, non per valore, ma per numero di elemento

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.