0

我有一个包含许多字段和一个特殊处理函数的大型表单在
函数开头声明了几个不同类型的变量

我想检查用户是否在函数执行之前设置了所有变量

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,因为它是一个空字符串

如果我们有 5 个以上的变量并且不是很优雅,则变体 1 不可读
变体 2 更加优雅和清晰,但不适用于非布尔类型的变量

如何一次检查大量变量?

4

1 回答 1

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()通过输入一个充满空格的字符串来使用户更难绕过表单。根据您的需要进行调整。

于 2021-09-18T18:09:13.643 回答