Проверка множества переменных на достоверность за один проход

У меня большая форма с множеством полей и специальной функцией обработки
Несколько переменных разных типов, объявленных в начале функции

Я хотел бы проверить, что пользователь установил все переменные перед выполнением функции

      const a1 = true, a2 = "str", a3 = { b: true }, a4 = [], a5 = "";

// Variant 1: old school
if (!(a1 && a2 && a3 && a4 && a5))
  return toast.error('Please fill out all fields');

// Variant 2: array aggregation
if (!Array.of(a1, a2, a3, a4, a5).every(Boolean))
  return toast.error('Please fill out all fields');

Я бы хотел поймать a5, поскольку это пустая строка

Вариант 1 не читается, если у нас 5+ переменных, и не очень элегантный
вариант 2 более элегантен и понятен, но не работает для переменных не типа Boolean

Как проверить множество переменных за один проход?

1 ответ

Решение

Это сработало бы для вас?

      const hasTruthyInput = v => typeof v === 'string' ? v.trim().length > 0 : Boolean(v);

// Variant 2: array aggregation
if (!Array.of(a1, a2, a3, a4, a5).every(hasTruthyInput))
  return toast.error('Please fill out all fields');

я использовал v.trim()чтобы пользователю было труднее обойти форму, введя строку, полную пробелов. Приспосабливайтесь к своим потребностям.

Другие вопросы по тегам