Проверка заполненности js
Есть конструкция следующего вида:
if (v.a > 1) {
return 'Значение 1';
} else if (v.a <= 2 && v.b == false) {
return 'Значение 2';
} else if (v.a <= 2 && v.b == true && v.c <= 3) {
return 'Значение 3';
} else if (v.a <= 2 && v.b == true && v.c > 3) {
return 'Значение 4';
} else {
return 'Входные параметры неверны';
}
Если я заполню только первое поле (переменная a), и оно соответствует первому условию в if, то получу return 'Значение 1'. Как можно корректно реализовать проверку заполненности всех полей, чтобы при пропуске хотя бы одного поля, я получал "Входные параметры неверны"?
Ответы (1 шт):
Автор решения: EzioMercer
→ Ссылка
Я бы проверял с помощью оператора in
Можно проверять по одному вот так:
const errorMessage = 'Входные параметры неверны'; const checkParams = (v) => { if (!('a' in v) || !('b' in v) || !('c' in v)) return errorMessage; if (v.a > 1) return 'Значение 1'; if (v.b) return 'Значение 2'; if (v.c <= 3) return 'Значение 3'; if (v.c > 3) return 'Значение 4'; return errorMessage; } console.log(checkParams({a: 5, b: 6})); // c not in v console.log(checkParams({a: 5, b: 6, c: 7})); // a > 1 console.log(checkParams({a: 0.5, b: 6, c: 7})); // v.b == true console.log(checkParams({a: 0.5, b: false, c: 2})); // v.c <= 3 console.log(checkParams({a: 0.5, b: false, c: 7})); // v.c > 3А можно записать названия всех нужных полей в массив и пройтись по нему:
const errorMessage = 'Входные параметры неверны'; const checkParams = (v) => { const needProps = ['a', 'b', 'c']; for (const prop of needProps) { if (!(prop in v)) return errorMessage; } if (v.a > 1) return 'Значение 1'; if (v.b) return 'Значение 2'; if (v.c <= 3) return 'Значение 3'; if (v.c > 3) return 'Значение 4'; return errorMessage; } console.log(checkParams({a: 5, c: 7})); // b not in v console.log(checkParams({a: 5, b: 6, c: 7})); // a > 1 console.log(checkParams({a: 0.5, b: 6, c: 7})); // v.b == true console.log(checkParams({a: 0.5, b: false, c: 2})); // v.c <= 3 console.log(checkParams({a: 0.5, b: false, c: 7})); // v.c > 3