Confrontare due array: verificare che tutti i valori di un'array siano contenuti in un'altra.

Discussione in 'jQuery' iniziata da otto9due, 5 Ottobre 2017.

Tag (etichette):
  1. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Sapete se esiste una funzione che mi permetta di confrontare due array per verificare se un array contiene tutti i valori di un'altro array?
    Vorrei confrontare l'array generato da dal click sui checkbox con altre da me create.. se sono uguali o la seconda array ( quella da me definita ) è contenute nel array generato deve dare un output..

    Qui il codice che genera l'array dinamica.. Mi manca il confronto, che non so come effettuare..

    Codice:
    jQuery(document).ready(function ($) {
        $("form#optional input").click(function () {
            var optional = [];
            $("form#optional input:checked").each(function () {
                optional.push($(this).val());
            });
    
            console.log(optional);
        });
    });
     
  2. otto9due

    otto9due Utente Attivo

    Registrato:
    22 Febbraio 2014
    Messaggi:
    529
    Mi Piace Ricevuti:
    21
    Punteggio:
    28
    Ho scritto qualcosa in più, ma ancora c'è qualcosa che non mi restituisce i risultati sperati.. Qualcuno di voi vede il problema?
    Codice:
    jQuery(document).ready(function ($) {
        // Al click su ogni checkbox
        $("form#optional input").click(function () {
            // imposto gli optional
            var optional = [];
            $("form#optional input:checked").each(function () {
                // aggiungo il valore del checkbox selezionato
                optional.push($(this).val());
            });
            
            // Mi creo degli array da verificare
            var test2 = ['animali','mare','piscina'];
            var test1 = ['animali','mare'];
            
            // Funzione che aggiunge +1 a conteggio se ogni valore presente negli array da verificare è presente nell'array optional
            function verifica(struttura) {
                conteggio = 0;
                $.each(struttura, function(index,val){
                    if (($.inArray(val, optional)) != -1){
                        conteggio =+ 1;
                    };
                });
     
                return conteggio;
            }
            
            console.log(verifica(test1)); // Questo mi da sempre 1, come mai??
            
            console.log('test1: ' + verifica(test1) + '/' + optional.length);
            console.log('test2: ' + verifica(test2) + '/' + optional.length);
            
            // A questo punto confronto il numero di valori contenuti in optional con conteggio per verificare se questo è uguale o maggiore al secondo.
            if( optional.length >= verifica(test1) ){
                $('#result').html("test1 ok");
            }else{
                $('#result').html("test1 manca");
            }
            
            if( optional.length >= verifica(test2) ){
                $('#result').html("test2 ok");
            }else{
                $('#result').html("test2 manca");
            }   
            
        });
    });
     
Sto caricando...

Condividi questa Pagina