Небольшая точка спроса в проекте, нажмите кнопку, проверьте десятки полей условий, оцените, все ли поля условий заполнены (выбраны) данными (по крайней мере, одно условие считается истинным), а затем выполните соответствующую операцию.
Поле оцениваемого состояния включает в себя радиоблок радио, поле множественного выбора флажка, поле ввода ввода, счетчик InputNumber, селектор Select, переключатель Switch и т. д.
Библиотека компонентов элементов V2.15.6, используемая в проекте
Типы данных и значения по умолчанию, соответствующие различным условиям
- Радио кнопка радио
string
''
- Флажок
array
[]
- Поле ввода ввода
string
''
- Счетчик InputNumber
number
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/…
如果喜欢,顺手点个赞再走呗 ^-^