Add isContained

This commit is contained in:
Angelos Chalaris
2020-01-05 21:40:51 +02:00
parent 9a3e74cefa
commit ec5509f7de
2 changed files with 43 additions and 0 deletions

26
snippets/isContainedIn.md Normal file
View File

@ -0,0 +1,26 @@
---
title: isContainedIn
tags: array,intermediate
---
Returns `true` if the elements of the first array are contained in the second one regardless of order, `false` otherwise.
Use a `for...of` loop over a `Set` created from the first array.
Use `Array.prototype.some()` to check if all distinct values are contained in the second array, use `Array.prototype.filter()` to compare the amount of occurences of each distinct value in both arrays.
Return `false` if the count of any element is greater in the first array than the second one, `true` otherwise.
```js
const isContainedIn = (a, b) => {
for (const v of new Set(a))
if (
!b.some(e => e === v) ||
a.filter(e => e === v).length > b.filter(e => e === v).length
)
return false;
return true;
}
```
```js
isContainedIn([1, 4], [2, 4, 1]); // true
```