Сделайте суждение if в js шелковистым и гладким

JavaScript
Сделайте суждение if в js шелковистым и гладким

Небольшая точка спроса в проекте, нажмите кнопку, проверьте десятки полей условий, оцените, все ли поля условий заполнены (выбраны) данными (по крайней мере, одно условие считается истинным), а затем выполните соответствующую операцию.

Поле оцениваемого состояния включает в себя радиоблок радио, поле множественного выбора флажка, поле ввода ввода, счетчик InputNumber, селектор Select, переключатель Switch и т. д.

Библиотека компонентов элементов V2.15.6, используемая в проекте

Типы данных и значения по умолчанию, соответствующие различным условиям

  • Радио кнопка радиоstring ''
  • Флажокarray []
  • Поле ввода вводаstring ''
  • Счетчик InputNumbernumber 0
  • Выберите селектор
    • радиоstring ''
    • Большой выборarray []
  • переключатель переключательboolean false

Код

идея первая

использовать напрямуюifСуждение сухое, а дальше примерный код такой (переменные - аналоговые переменные)

// 多条件判断开始,如下

if (obj.radio1 || obj.checkbox1.length > 0 || obj.input1 || obj.inputNumber1 > 0 || obj.select1 || obj.select2.length > 0 || obj.switch1 || obj.radio2 || obj.checkbox2.length > 0 || obj.input2 || obj.inputNumber2 > 0 || obj.select3 || obj.select4.length > 0 || obj.switch2  ...) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
} 

Имя переменной в реальной сцене проекта имеет много семантических символов,ifСудя по тому, что я написал длинную строку, не написав несколько, а потом не смог написать после нескольких (было ощущение, что я пишу кучу ши).

Можно ли это реализовать более изящно?
идея вторая

Поместите эти переменные, которые необходимо оценить, в массив, используйтеmapобработано вBooleanтип, использованиеincludesПроверить, содержит ли массив указанныйBooleanстоимость

// 多条件判断开始,如下

const arr = [
  obj.radio1,
  obj.checkbox1.length,
  obj.input1,
  obj.inputNumber1,
  obj.select1,
  obj.select2.length,
  obj.switch1,
  obj.radio2,
  obj.checkbox2.length,
  obj.input2,
  obj.inputNumber2,
  obj.select3,
  obj.select4.length,
  obj.switch2 
  ...
]

const arr1 = arr.map(item => Boolean(item))
if (arr1.includes(true)) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
} 

хорошо,ifОбработка большого количества суждений таким образом делает его более гладким^-^

Справочная документация

developer.Mozilla.org/this-cn/docs/…

developer.Mozilla.org/this-cn/docs/…

developer.Mozilla.org/this-cn/docs/…

如果喜欢,顺手点个赞再走呗 ^-^