Проверка множества переменных на достоверность за один проход
У меня большая форма с множеством полей и специальной функцией обработки
Несколько переменных разных типов, объявленных в начале функции
Я хотел бы проверить, что пользователь установил все переменные перед выполнением функции
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()
чтобы пользователю было труднее обойти форму, введя строку, полную пробелов. Приспосабливайтесь к своим потребностям.