@amaui/utils
Version:
27 lines (24 loc) • 1.09 kB
JavaScript
import is from './is';
import isValid from './isValid';
import getObjectValue from './getObjectValue';
const checkObjectFilters = function (value) {
let filters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
let operator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'or';
// If there are no filters,
// it means that the check passes,
// as there is nothing to filter
if (!filters || !is('array', filters) || !filters.length) return true;
const result = filters[operator === 'or' ? 'some' : 'every'](filter => {
const valueObject = getObjectValue(value, filter.field); // If value doesn't exists (it is undefined),
// and operator is of not-* type in that use case
// any value is not undefined thus this check's true
if (valueObject === undefined && filter.operator.indexOf('not-') === 0) return true;
return isValid('compare', undefined, {
valueA: valueObject,
valueB: filter.value,
operator: filter.operator
});
});
return result;
};
export default checkObjectFilters;