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

otto9due

Utente Attivo
22 Feb 2014
529
21
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);
    });
});
 

otto9due

Utente Attivo
22 Feb 2014
529
21
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");
        }   
        
    });
});