UNPKG

658 BJavaScriptView Raw
1export function valueMatchesCriteria(value, criteria) {
2 if (value == null) {
3 return value === criteria;
4 }
5 else if (Array.isArray(value)) {
6 return (Array.isArray(criteria) &&
7 value.every((val, index) => valueMatchesCriteria(val, criteria[index])));
8 }
9 else if (typeof value === 'object') {
10 return (typeof criteria === 'object' &&
11 criteria &&
12 Object.keys(criteria).every(propertyName => valueMatchesCriteria(value[propertyName], criteria[propertyName])));
13 }
14 else if (criteria instanceof RegExp) {
15 return criteria.test(value);
16 }
17 return value === criteria;
18}