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