@gunner17

Класс который проверяет значение?

Хелп!!! нужно создать класс для проверки значений по определённым критериям. Критерии проверки передаются в конструктор в виде массива объектов, где каждый объект представляет собой отдельный критерий
{
name: 'required' /* строка с уникальным именем критерия */,
check: value => { /* логика проверки, проверка прошла - вернуть true, нет - false */ },
message: value => { /* возвращает строку с сообщением об ошибке */ }
}
класс должен иметь два метода:
- toggleValidator(name, state) - включает/выключает определённый критерий. name - имя критерия, state (необязательный) - boolean состояние критерия. Если state не передан, то первый вызов метода должен выключить критерий, а следующий включить и т.д.
- validate(value) - производит проверку значения value по включённым критериям. Возвращает объект:

{
valid: /* true - проверка прошла, false - нет */,
errors: /* Map с ошибками, где ключ это имя критерия, значение - сообщение об ошибке */
}
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
@StockholmSyndrome
function Validator(criterias) {
  let items = criterias.map((item) => ({enabled: true, ...item}));


  this.toggleValidate = function(name, state) {
    let item = items.find((item) => item.name === name);
    if (item) {
      item.enabled = typeof state === 'undefined' ? !item.enabled : state;
    }
  }


  this.validate = function(value) {
    let valid = true;
    let errors = new Map();

    items.forEach((item) => {
      if (item.enabled && !item.check(value)) {
        valid = false; 
        errors.set(item.name, item.message(value));
      }   
    }); 

    return {valid, errors};
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы