There are many use cases where knowing if an array is a subset of another can be quite useful - and although usually immediately obvious to the human eye, it can be difficult to evaluate in code.

In the code below, `arr2`

is a **subset** of `arr1`

, but `arr3`

is not.

```
let arr1 = [ 'a', 'b', 'c' ];
let arr2 = [ 'b', 'c' ];
let arr3 = [ 'c', 'd' ];
```

If we want to find out if an array is a subset of another array, the best way to evaluate this is by using the array every method. This method iterates through each element in an array and performs a test on it. If every element in the array passes that test, then the overall `every`

method will return true.

For each evaluation, we have a "parent" array, and a "subset" array - where we want to check if the "subset" array is fully contained within the "parent" array.

To evaluate if one array is a subset of another, we can run `every`

on the each element on the "subset" array. Within the `every`

function, we can test if the "parent" array contains each element in the "subset" array. If it does, then `every`

will return `true`

. Otherwise, it'll return `false`

.

This can be accomplished easily with a function like the one shown below - `checkSubset`

will return `true`

should the `subsetArray`

be fully contained within the `parentArray`

:

```
let arr1 = [ 'a', 'b', 'c' ];
let arr2 = [ 'b', 'c' ];
let arr3 = [ 'c', 'd' ];
let checkSubset = (parentArray, subsetArray) => {
return subsetArray.every((el) => {
return parentArray.includes(el)
})
}
checkSubset(arr1, arr2); // returns true
checkSubset(arr1, arr3); // returns false
```

## Top comments (5)

this is a great way to use Set(), thanks!

If you want it to not only check for subset,but also for same order,use:

let isSubsetAndInSameOrder = (parentArray, subsetArray) => {

return subsetArray.every((el, index) => {

return parentArray[index] === el;

});

You don't want to search at the beginning of the array every time you search an element in a subarray to make sure it exists in the array right?