2016-05-02 16 views
6

Ho bisogno di verificare se tutti gli elementi in un array possono essere trovati all'interno di un altro array. Cioè, ho bisogno di verificare se un array è un sottoinsieme di un altro array.Controllare se tutti gli elementi possono essere trovati in un altro array

Esempio:

var array = [1, 2, 5, 7]; 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 

Confrontando queste due matrici sopra deve restituire vero come tutti gli articoli di array possono essere trovati in otherArray.

var array = [1, 2, 7, 9]; 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 

Confrontando queste due matrici sopra deve restituire falso come uno degli elementi in array non può essere trovato in otherArray.

Ho provato a utilizzare il metodo indexOf all'interno di un ciclo for senza esito positivo. Spero che qualcuno possa aiutarmi. :)

+1

Sai in anticipo se gli array sono sempre ordinati? –

+0

Se 'otherArray' è grande, sarebbe meglio convertirlo in un oggetto le cui chiavi sono gli elementi. – Barmar

risposta

11

Uso Array.prototype.every:

Il ogni() Test metodo se tutti gli elementi della matrice superato la prova realizzata dalla funzione prevista.

var array = [1, 2, 7, 9]; 
 
var otherArray = [1, 2, 3, 4, 5, 6, 7, 8]; 
 

 
var isSubset = array.every(function(val) { 
 
    return otherArray.indexOf(val) >= 0; 
 
}) 
 

 
document.body.innerHTML = "Is array a subset of otherArray? " + isSubset;

Problemi correlati